我对_sbrk有个问题。在编译的链接阶段,我使用下面的comand链接我的对象,并获得了对_sbrk的未定义引用。
arm-none-eabi-ld -static -T linkerscript.ld -o exe timer_example.o /home/ziga/projects/cs_lite/arm-none-eabi/lib/libc.a /home/ziga/projects/cs_lite/lib/gcc/arm-none-eabi/4.5.1/libgcc.a我正在编译arm926ej-s和ARM模式,所以我想我已经选择了正确的multilib (__、libc.a和libgcc.a__),它位于文件夹home/ziga/projects/cs_lite/arm-none-eabi/lib/中。
我一直在网上搜索_sbrk函数,它是一种内存管理调用,它不包括在标准C库中,因为它依赖于微处理器。那么,我必须自己编写_sbrk函数吗?我该怎么做呢?您有arm926ej-s的例子吗?在编写这个函数之后,我打算将它编译成一个对象文件,并将它与其他对象库链接起来。
发布于 2021-04-22 16:41:58
我解决了这个问题,并会在这里发布解决方案,所以我会把一些东西回馈给comunity。函数_sbrk位于ARM的NXP包中。包可供下载(链接是为所有不知道这一点)的这里在子文件夹CDL_v005/csps/lpc313x/bsps/ea3131/source中,您将找到名为libnosys_gnu.c的源文件,该源文件应该添加到项目中并编译为对象文件,然后链接到其他对象和库中的可执行文件。
最美好的祝愿和许多成功。
发布于 2017-01-09 19:46:21
这有助于:
-mcpu=皮层-m4 -mthumb -specs=nano.specs -specs=nosys.specs -mfpu=fpv4 4-sp-d16-mfloat=hard
重要的开关“似乎”是:
-specs=nano.specs -specs=nosys.specs
发布于 2018-11-14 13:34:25
我也遇到了同样的问题,将它们添加到链接器标志中有助于:
-specs=nano.specs -specs=nosys.specs另外,仅用nosys.specs解决了这个问题,但是代码的大小要大得多。
https://stackoverflow.com/questions/5764414
复制相似问题