ld:“未定义引用符号'sqrtf'”错误与G ++通过Apache Ant

时间:2016-10-29 17:04:31

标签: ubuntu ant g++ cmath

最近,我正在尝试将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也无济于事。有什么想法吗?

谢谢!

2 个答案:

答案 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