我刚刚安装了 Ubuntu 12.04 LTS,无法链接到数学函数(来自)。我安装了 gcc,可以正常编译源代码。但是,尝试:
gcc -lm montecarlo_time.o parsercfile.o -o trmcfl
给出以下形式的几个错误:
montecarlo_time.o: In function `main:
/home/karthik/Research/MC/trmcfl/Dumps/whiteScaling/18-Sep-2012/montecarlo_time.c:75: undefined reference to asin`
但是,所有这些文件都存在(并且对 ldconfig -v -N 可见)
/lib/i386-linux-gnu/libm.so.6
/lib64/libm.so.6
/usr/lib/i386-linux-gnu/libm.a
/usr/lib/i386-linux-gnu/libm.so
/usr/lib/i386-linux-gnu/xen/libm.a
/usr/lib64/libm.a
/usr/lib64/libm.so
链接为何失败?
答案1
您应该-lm
在最后使用。
因为 gcc 遇到后发现了未解析的符号montecarlo_time.o
,并且没有库或其他任何可以找到的东西,所以它可以解析该符号。
答案2
我有总是输入gcc -lm file.c
; 直到最新版本的 Ubuntu,这个方法都有效。在互联网上,我看到有人说这是不好的风格,但它确实有效。现在看来这种情况已经改变了。