2016-10-16 11 views
-1

私は学校での練習のためのチュートリアル練習をcで行っています。私はGCCでコンパイルすることができますc(Netbeansコンパイラとgcc)のsqrt()メソッド

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
. 
. 
double s = (a+b+c)/2.0; 
double A = sqrt(s*(s-a)*(s-b)*(s-c)) //a,b,c = 3,3,2 
. 
. 

gcc exercise.c -o exercise -lm 

すべてがうまく機能し、私はこの小さなメソッド(ヘロンの公式を)持っています。 Netbeansの、SQRT()メソッドで

/home/l2ysho/NetBeansProjects/cviko1/main.c:48: undefined reference to `sqrt' 
collect2: error: ld returned 1 exit status 
nbproject/Makefile-Debug.mk:62: recipe for target 'dist/Debug/GNU-  Linux/cviko1' failed 
make[2]: *** [dist/Debug/GNU-Linux/cviko1] Error 1 
make[2]: Leaving directory '/home/l2ysho/NetBeansProjects/cviko1' 
nbproject/Makefile-Debug.mk:59: recipe for target '.build-conf' failed 
make[1]: *** [.build-conf] Error 2 
make[1]: Leaving directory '/home/l2ysho/NetBeansProjects/cviko1' 
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed 
make: *** [.build-impl] Error 2 

BUILD FAILED (exit value 2, total time: 861ms) 

のみ定数と番号(SQRT(2.5))で動作しますが、ありません。問題は、私はNetBeansで同じコードを書き換えるしようとすると、それはこのエラーをスローし、あります(sqrt(s))である。私は、それはNetbeansのコンパイラでいくつかの問題だと思う。誰か似たような問題がありますか?

+3

netbeansはデフォルトで '-lm'を渡しません。このオプションを追加するには、プロセス設定を変更する必要があります。 –

+0

gccのどのバージョンをお使いですか?最近のバージョンでは、 '-lm'フラグは必要ありません(私は数週間前に驚いたことがあります)。たぶん答えはあなたのコンパイラをアップグレードすることです、それは多くのことを解決するだろう:)ああ、おそらくあなたは 'nbproject/Makefile-Debug.mk'の内容を投稿することもできます。 –

+0

'sqrt(2.5)'はコンパイラによって最適化され、おそらく定数で置き換えられますが、math関数は決して呼び出されません。そういうわけで、それは機能します。 – potrzebie

答えて

0

解決策が見つかりました。

File->Project Properties->Build->Linker->Libraries->add Library/add standard Library 

は、私はまたのNetBeans compilator構成に-lmの引数を追加しようとしたが、これは働いていません:あなたは同じ問題を抱えている場合は、ハードのNetBeans IDEでのmath.hをリンクすることができます。

関連する問題