2016-12-02 4 views
0

У меня есть крест, скомпилированный небольшой источник C для архитектуры ARM. Компиляция и компоновка прошли нормально, но во время выполнения я получил эту ошибку: не могу разрешить символ «__aeabi_d2iz».не может решить символ '__aeabi_d2iz'

Я указал, что проблема связана с явным броском между int и double. Может кто-нибудь помочь мне выяснить, что происходит не так? Выбрасывание значения поплавка не вызывает проблем.

Вот компиляции и компоновки опций, которые я использовал:

arm-buildroot-linux-uclibcgnueabi-gcc -mcpu=arm920t -mtune=arm920t -mapcs-frame -mapcs-stack-check -fno-stack-limit -Wall -c test.c -o test.o 
arm-buildroot-linux-uclibcgnueabi-gcc -mcpu=arm920t -mtune=arm920t -mapcs-frame -mapcs-stack-check -fno-stack-limit -D_REENTRANT -o test.x test.o -lm 

Вот исходный код:

int main(void) 
{ 
    int i; 
    double dTest = 123.456; 

    i = (int)dTest; // <--- runtime error : can't resolve symbol '__aeabi_d2iz' 
    printf("Converted i=%d\n", i); 
} 
+0

Извините, я неправильно понял это как ошибку времени ссылки, но теперь знаю, что вы выполняете кросс-компиляцию: являются ли библиотеки, которые вы связываете с теми же самыми в целевой среде во время выполнения? (загруженный вопрос, они почти наверняка не являются) – Notlikethat

ответ

1

Проблема возникла из версии несоответствие между математической библиотеки на мишени и один Я связывался.

Смежные вопросы