2016-10-29 10 views
0

最近、Apache Antをg ++ 4.8で-std=c++11と使用しようとしています。ld:Apache Ant経由のG ++でのシンボル「sqrtf」の未定義

このコードを試してみたら、それは合格しました。

#include <cmath> 
... 
sqrtf((float)100); 

しかし、私が入力した場合:

/usr/bin/ld: test.o: undefined reference to symbol '[email protected]@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を追加:

#include <cmath> 
... 
sqrt((float)100); 

グラム++コンパイラはエラーを生成します。何か案は?

ありがとうございます!

答えて

0

解決策が見つかりました。 Apache Antはg ++を使ったコマンドラインと少し違っているようですが、これはリンク引数付きの-lm関数を次のように追加する必要があります。

<linkerarg location="end" value="-lm"> 

私はAntには慣れていないので、最初に引数なしで場所を指定して、Apache Antが私にエラーを出しました。 :

0

Linuxディストリビューションの中には、g ++コンパイラとgccコンパイラで、 "math.h"がCに、 "cmath"がC++に含まれているcmathライブラリをリンクする必要があります

+0

いいえ、この場合はまったく問題ではなく、ターミナル '' g ++ test.cpp -o test.o''で問題なく使用できます。 – KKyang

関連する問題