最近,我正在尝试将Apache Ant与g ++ 4.8一起使用-std=c++11
。
如果我尝试了这段代码就会通过。
#include <cmath>
...
sqrtf((float)100);
但是,如果我输入:
#include <cmath>
...
sqrt((float)100);
g ++编译器将产生错误:
/usr/bin/ld: test.o: undefined reference to symbol 'sqrtf@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
添加-lm
也无济于事。有什么想法吗?
谢谢!
答案 0 :(得分:0)
我找到了解决方案。似乎Apache Ant与使用g ++的命令行略有不同,需要使用链接参数添加-lm
函数,如下所示。
<linkerarg location="end" value="-lm">
由于我不熟悉Ant,我第一次编写没有位置的参数,Apache Ant给了我一个错误。 :(
答案 1 :(得分:0)
问题不在于apache ant,在某些Linux发行版中,g ++和gcc编译器需要“-lm”来链接C中“math.h”和C ++中“cmath”所包含的cmath lib