У меня есть крест, скомпилированный небольшой источник 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);
}
Извините, я неправильно понял это как ошибку времени ссылки, но теперь знаю, что вы выполняете кросс-компиляцию: являются ли библиотеки, которые вы связываете с теми же самыми в целевой среде во время выполнения? (загруженный вопрос, они почти наверняка не являются) – Notlikethat