Compilation 将未定义的引用链接到`u aeabi_idiv';时出错;链接libgcc.a时

Compilation 将未定义的引用链接到`u aeabi_idiv';时出错;链接libgcc.a时,compilation,linker,arm,Compilation,Linker,Arm,这是我的链接器命令: arm-none-eabi-ld boot_and_link/startup.o drivers/gpio.o ../programs/dmips/dhry_1.o ../programs/dmips/dhry_2.o -nostartfiles -T boot_and_link/linker.ld -L/usr/lib/gcc/arm-none-eabi/4.8/armv6-m -lgcc -L/usr/lib/arm-none-eabi/newlib/armv6-m/

这是我的链接器命令:

arm-none-eabi-ld boot_and_link/startup.o drivers/gpio.o ../programs/dmips/dhry_1.o ../programs/dmips/dhry_2.o -nostartfiles -T boot_and_link/linker.ld -L/usr/lib/gcc/arm-none-eabi/4.8/armv6-m -lgcc -L/usr/lib/arm-none-eabi/newlib/armv6-m/ -lc -L/usr/lib/arm-none-eabi/newlib/armv6-m/ -lnosys -o ../programs/dmips/dmips.elf
我正在使用自己的启动代码和链接器脚本,因为我正在进行裸机编译,试图在Cortex M0处理器上运行Dhrystone基准测试

以下是我得到的错误:

/usr/lib/arm-none-eabi/newlib/armv6-m//libc.a(lib_a-fvwrite.o): In function `__sfvwrite_r':
/home/tin/projects/debian/arm-toolchain/collab-maint/newlib/build/arm-none-eabi/armv6-m/newlib/libc/stdio/../../../../../../newlib/libc/stdio/fvwrite.c:196: undefined reference to `__aeabi_idiv'
/usr/lib/arm-none-eabi/newlib/armv6-m//libnosys.a(sbrk.o): In function `_sbrk':
/home/tin/projects/debian/arm-toolchain/collab-maint/newlib/build/arm-none-eabi/armv6-m/libgloss/libnosys/../../../../../libgloss/libnosys/sbrk.c:14: undefined reference to `end'
按照我的理解,结束符号应该是堆的结束,对吗?我可以通过在链接器脚本中设置它来摆脱它

然而,另一个是威德。该符号在libgcc.a中声明,其中包括

在我看来,问题是一个简单的路径冲突:无论fvwrite.o是什么,它都希望使用该符号,而链接器没有在libgcc.a中查找它,libgcc.a已存在并作为参数库添加。记住这只是一个想法。我真的不知道发生了什么事


有什么想法吗

你列出事情的顺序很重要。例如,在
-lgcc
之前尝试
-lc
。您的问题似乎与ARM编程没有直接关系。这解决了我的问题,谢谢!!!可能重复的