退出,c:(.文本+0x 18):使用arm-none-eabi-gcc时未定义对'_exit'的引用

5us2dqdw  于 2022-11-13  发布在  其他
关注(0)|答案(3)|浏览(160)

我是微控制器领域的新手,我需要移植一个编译AVR微控制器程序的IDE来编译ARM微控制器的程序,我刚刚把编译器从AVR换到了ARM,并按照别人的说法增加了一些选项,下面是命令:

\ARM-GCC\bin\arm-none-eabi-gcc -O0 -ffunction-sections -Wall -std=gnu99 -mfloat-abi=soft 
-Wa,-adhlns="$@.lst" -fmessage-length=0 -mcpu=cortex-m0 -mthumb -g3 -gdwarf-2 -Wl,
--gc-sections -o <Dir_name>\Build_Files\Blink_arm.cpp.elf  <Dir_name>\Build_Files\Blink_arm.cpp.o <Dir_name>\Build_Files\core.a 
-L<Dir_name>\Build_Files -lm

当我执行它时,我得到以下错误:

tools/arm-gcc/bin/../lib/gcc/arm-none-eabi/4.6.2\libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text+0x18): undefined reference to `_exit'  
collect2: ld returned 1 exit status

我可以得到一些关于这个错误是什么以及如何解决它的帮助吗?而且我也不知道命令行中的那些选项指定了什么。

mrphzbgm

mrphzbgm1#

当在一台机器/架构中编译一个arm-none-eabi-gcc的文件并将其加载到ARM目标机器时,会发生这种情况。很可能你没有使用半宿主,而是想重定向。
ARM®编译器工具链4.1版指出:
半宿主是一种机制,它使ARM目标上运行的代码能够与运行调试器的主机上的输入/输出工具进行通信和使用。
从工具链的readme.txt(在文件夹.../gcc-arm-none-eabi-VERSION/share/doc/gcc-arm-none-eabi下):

**非半宿主/重定目标

如果使用重定目标,则链接如下:$ arm-none-eabi-gcc --规格=不系统规格$(其他链接选项)
对我来说--specs=nosys.specs就足够了;)

wqlqzqxt

wqlqzqxt2#

使用--specs=nosys.specs

arm-none-eabi-gcc --specs=nosys.specs $(OTHER_LINK_OPTIONS)

参考编号:

pdtvr36n

pdtvr36n3#

我也遇到了同样的问题,解决方法如下:

  • 将选项-ffreestanding -flto添加到编译器调用行中。
  • 并将选项-flto -ffreestanding -nostdlib添加到链接器调用行中。

相关问题