【问题标题】:arm-gcc unresolved reference 'sinf'arm-gcc 未解析的参考 'sinf'
【发布时间】:2013-10-27 02:01:26
【问题描述】:

我在尝试编译时收到此错误:

error: undefined reference to `sinf'

我已经包含了 math.h,并验证了它是在那里定义的:

#include <math.h>

但是,我在尝试链接到数学库时遇到错误:

arm-none-eabi-ld -L/usr/lib -lm --gc-sections -T ../standalone.ld -o "main.elf"  ./main.o ./startup_gcc.o  
error: cannot find -lm

然而,图书馆显然在那里:

Kens-MacBook-Pro:lib Ken$ pwd
/usr/lib
Kens-MacBook-Pro:lib Ken$ ls | grep libm
libm.dylib
libmecab.1.0.0.dylib
libmecab.dylib
libmecabra.dylib
libmenu.5.4.dylib
libmenu.dylib
libmx.A.dylib
libmx.dylib
Kens-MacBook-Pro:lib Ken$ 

我做错了什么?我正在使用 Eclipse。

【问题讨论】:

  • @chux OP 说数学库没有被链接。我看不出在同一个库中使用不同的函数会有什么帮助。

标签: c gcc arm


【解决方案1】:

根据您的arm-none-eabi-ld 命令判断,我假设您正在交叉编译。无论您的平台是什么,您都需要将某种数学库安装到工具链中。

您发布的ls 输出包含可用于您的主机而不是您的目标的库列表。例如,在我的机器上,我的 ARM 交叉编译器的库位于 /opt/local/arm-none-eabi/lib/

danieltang ~$ ls /opt/local/arm-none-eabi/lib/
crt0.o      ldscripts  libm.a     libssp_nonshared.a   libstdc++.a-gdb.py  libsupc++.la
elf2flt.ld  libc.a     libssp.a   libssp_nonshared.la  libstdc++.la    thumb
fpu         libg.a     libssp.la  libstdc++.a          libsupc++.a

【讨论】:

  • 谢谢,但是当我链接到 arm-none-eabi 中包含的 libm.a 时,我从该文件中获得了数百个未解决的引用:\
  • 您可能需要链接libgcc。尝试将-lgcc 添加到您的链接器标志中。
  • 在为 armv7e-m 架构添加 arm-none-eabi libm.a 数学库后,我得到了一百万个其他未解决的错误。添加 -nostartfiles 标志解决了问题,并且我能够使用 arm 数学库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-02
  • 1970-01-01
相关资源
最近更新 更多