ld:通过 Apache Ant 使用 G++ 的"undefined reference to symbol 'sqrtf'"错误



最近,我试图使用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给了我一个错误。(

相关内容

  • 没有找到相关文章

最新更新