当前位置: 首页 > 知识库问答 >
问题:

出口c:(.text 0x18):使用arm none eabi gcc时对`_exit'的未定义引用

伯和蔼
2023-03-14

我是微控制器领域的新手。我需要移植一个IDE,为AVR微控制器编译程序,为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

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

共有3个答案

鲍国兴
2023-03-14

我也有同样的问题。解决方案如下:

  • 将选项-ffreestanding-flto添加到编译器调用行中。
  • 并将选项-flto-ffreestanding-nostdlib添加到链接器调用行中。
孙永思
2023-03-14

使用--specs=nosys。规格

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

参考:

  • ARM选项
尹辰沛
2023-03-14

当在一台机器/体系结构中编译带有arm-no-eabi-gcc的文件以将其加载到ARM目标机器中时,会发生这种情况。很可能您没有使用半托管,而是想要重新定位。

ARM®编译器工具链4.1版指出:

半托管是一种机制,它使运行在ARM目标上的代码能够通信并使用运行调试器的主机上的输入/输出设施。

从工具链的readme.txt(在文件夹.../gcc-arm-no-eabi-VERSION/share/doc/gcc-arm-no-eabi下):

**非半宿主/重定目标

如果您使用retarget,链接如下:$arm-none-eabi-gcc--spes=nosys.specs$(OTHER_LINK_OPTIONS)

对我来说,——specs=nosys。规格足够了;)

 类似资料:
  • 问题内容: 我在使用C ++(Eclipse)的Linux中工作,并且想要使用一个库。Eclipse显示了一个错误: 你知道解决方案吗? 这是我的代码: 问题答案: 您必须针对libdl进行链接,添加 -ldl 到您的链接器选项

  • 问题内容: 我试图将库包含在我的项目中,并且一直面临着同样的问题。我在使用Codeblocks IDE的Ubuntu 12.10上,尝试手动读取站点上的说明来安装库,但是在头文件以及使用前需要构建的库中出现错误。 然后,我通过terminalby安装了库。此后,在我的代码块程序中,可以包含类似的标题,但是当我尝试包含Filesystem库的标题( )时,出现以下错误: 我不确定如何解决此错误(特别

  • 我正试图将库包括在我的项目中,并一直面临着同样的问题。我在使用Codeblocks IDE的Ubuntu12.10上,尝试手动安装库,阅读网站上的说明,但在使用库之前,得到了带有标题的错误以及要构建的错误。 然后,我通过terminalby

  • 我正在尝试使用AassetManager从android apk访问资产。然而,尽管我已经包含了asset_manager.h和asset_manager_jni.h,但我仍然得到了“对aassetmanager_fromjava的未定义引用”。其他来自asset_manager.h的函数,如AAssetManager_openDir(mgr,"“)等也不能被引用。 以下是完整的代码 这段代码在一

  • 错误:未定义对'pthread_cancel'的引用

  • 我决定尝试编写一个基本程序,但我一直收到这个错误: /tmp/cczXwiYT。o: 在function