我有三个C文件 a.c,b.c 和 d.c ,编译如下:
arm-linux-gnueabihf-gcc -c -fPIC -Iab/inc/ -I../inc ab/src/a.c -oa.o
arm-linux-gnueabihf-gcc -c -fPIC -Iab/inc/ -I../inc ab/src/b.c -ob.o
arm-linux-gnueabihf-ld -fPIC -shared a.o b.o -olibab.so
arm-linux-gnueabihf-gcc -pthread -Iab/inc/ -I../inc/ -L. ab/test/src/d.c -L. -lab
如果没有交叉编译我没有错误或警告但是,在交叉编译中我得到错误:
错误如下
arm-linux-gnueabihf/bin/ld: a.out: hidden symbol `__aeabi_uidivmod' in gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/libgcc.a(_udivsi3.o) is referenced by DSO
arm-linux-gnueabihf/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
问题是因为链接链接器(ld),如果我通过gcc链接,则不会看到此错误。
链接器没有链接到libgcc.a,因为看到这个错误这是来自linaro IRC频道的响应