我在尝试编译时收到此错误:
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。
答案 0 :(得分:2)
根据您的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