LINUX.ORG.RU

GCC, can't resolve symbol


0

0

Имеется самосборный toolchain для ARM (arm-unknown-linux-uclibcgnueabi), собираю им busybox. В результате некоторые команды не работают, fbset например.

# fbset
fbset: can't resolve symbol '__aeabi_d2iz'

Это видимо вывод ld.so . Предполагая, что это функция из libgcc_s.so пробую,

# LD_PRELOAD=/usr/lib/libgcc_s.so fbset

работает. Что за безобразие ?

# ldd /usr/sbin/fbset
libm.so.0 => /lib/libm.so.0 (0x4000e000)
libc.so.0 => /lib/libc.so.0 (0x40029000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x40000000)

Собираю такой тест,

$ cat hw.c
#include <stdio.h>
int main()
{
double a;
double b;
scanf("%lf %lf", &a, &b);
printf("%lf %i\n", a/b, (int) b);
return 0;
}

$ arm-unknown-linux-uclibcgnueabi-gcc -o hw -Os hw.c

Работает, при этом,

$ arm-unknown-linux-uclibcgnueabi-nm hw | grep __aeabi_
00008ab0 T __aeabi_d2iz
000088a4 T __aeabi_ddiv
00008614 T __aeabi_dmul

а для busybox вот так,

$ arm-unknown-linux-uclibcgnueabi-nm busybox_unstripped | grep __aeabi_
000ab704 T __aeabi_cdcmpeq
000ab704 T __aeabi_cdcmple
000ab6e8 T __aeabi_cdrcmple
000ab7e8 T __aeabi_d2f
U __aeabi_d2iz
000ab794 T __aeabi_d2uiz
000aada8 T __aeabi_dadd
000ab71c T __aeabi_dcmpeq
000ab764 T __aeabi_dcmpge
000ab77c T __aeabi_dcmpgt
000ab74c T __aeabi_dcmple
000ab734 T __aeabi_dcmplt
000ab448 T __aeabi_ddiv
000ab1b8 T __aeabi_dmul
000aad9c T __aeabi_drsub
000aada4 T __aeabi_dsub
000ab104 T __aeabi_f2d
000ab894 T __aeabi_fadd
000abccc T __aeabi_fdiv
000abb34 T __aeabi_fmul
000ab888 T __aeabi_frsub
000ab890 T __aeabi_fsub
000ab0dc T __aeabi_i2d
000aba58 T __aeabi_i2f
000aac20 T __aeabi_idiv
000aad4c T __aeabi_idivmod
000ab158 T __aeabi_l2d
000aba88 T __aeabi_l2f
000aad80 T __aeabi_lasr
000abe2c T __aeabi_lcmp
000abe4c T __aeabi_ldivmod
U __aeabi_llsl
000aad64 T __aeabi_llsr
000ab0b8 T __aeabi_ui2d
000aba50 T __aeabi_ui2f
000aab0c T __aeabi_uidiv
000aac08 T __aeabi_uidivmod
000ab144 T __aeabi_ul2d
000aba78 T __aeabi_ul2f
000abe68 T __aeabi_uldivmod
000acfbc T __aeabi_unwind_cpp_pr0
000acfb4 W __aeabi_unwind_cpp_pr1
000acfac W __aeabi_unwind_cpp_pr2

Пересобрал GCC с --disable-shared, не помогло. Кто нибудь знает причину происходящего?

★★

>Имеется самосборный toolchain для ARM (arm-unknown-linux-uclibcgnueabi), собираю им busybox. В результате некоторые команды не работают
>Кто нибудь знает причину происходящего?


Ты сам ее назвал в самом первом предложении. Ибо у меня несамосборный аналогичный arm-unknown-linux-uclibcgnueabi собирает все и прекрасно потом все работает. Похоже что-то с soft float не так.

imhotep
()
Ответ на: комментарий от imhotep

Помогло отключение 'Enable C99 Floating-point environment' в uClibc .

amaora ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.