最近,我正在尝试在-std=c++11中使用Apache Ant和g++4.8。
如果我尝试这个代码,它会通过。
#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也无济于事。有什么想法吗?
谢谢!
发布于 2016-10-30 09:45:20
这个问题不是apache ant造成的,在一些Linux发行版中,g++和gcc编译器需要"-lm“来链接C中的"math.h”和C++中的" cmath“所包含的cmath库
发布于 2016-10-30 09:18:00
我找到了解决方案。Apache Ant似乎与使用g++的命令行稍有不同,后者需要添加带有链接参数的-lm函数,如下所示。
<linkerarg location="end" value="-lm">因为我不熟悉Ant,所以在我第一次编写没有位置的参数时,Apache Ant给了我一个错误。:(
https://stackoverflow.com/questions/40321507
复制相似问题