最近,我试图使用Apache Ant与g++4.8与-std=c++11
。
如果我尝试这个代码,它通过了。
#include <cmath>
...
sqrtf((float)100);
但是,如果我输入:
#include <cmath>
...
sqrt((float)100);
c++编译器将产生如下错误:
/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
也没有帮助。什么好主意吗?
谢谢!
这个问题不是apache ant,在一些Linux发行版中,g++和gcc编译器需要"-lm"来链接cmath库,该库包含在C中的"math.h"和c++中的"cmath"
我找到了解决方案。Apache Ant似乎与使用g++的命令行有点不同,g++需要添加-lm
函数和如下所示的链接参数。
<linkerarg location="end" value="-lm">
由于我不熟悉Ant,所以第一次编写没有位置的参数时,Apache Ant给了我一个错误。(