2012-10-10 29 views
40

Possible Duplicate:
Problem using pow() in C
what is 'undefined reference to `pow''未定義の参照()Cで、のmath.h

を含むにもかかわらず、私は本当に私を不可解だUNIのための授業の簡単な一片の問題のビットを持っています。

私は、とりわけ、与えられた半径からの球の体積を計算するプログラムを書く必要がありました。私は余分ブラウニーポイントのために、というだけでr*r*rを使用するよりもpow()機能を使用しようと思いましたが、コンパイラは私に次のエラーを与え続け:

undefined reference to 'pow' collect2: error: ld returned 1 exit status

私のコードは次のようになります。

#include <math.h> 

#define PI 3.14159265 //defines the value of PI 

/* Declare the functions */ 
double volumeFromRadius(double radius); 

/* Calculate the volume of a sphere from a given radius */ 
double volumeFromRadius(double radius) { 
    return (4.0/3.0) * PI * pow(radius,3.0f); 
} 

と私はコマンドでコンパイルしていますgcc -o sphere sphere.c

これは、コンパイルされ、uniのWindowsマシン上でコード::ブロックで正常に動作しますが、自宅のFedora 17では、コマンドラインコンパイラは実行を拒否します。どんな考えがあっても感謝しています!

祝福、あなたが数学ライブラリとリンクする必要があり イアン

答えて

78

gcc -o sphere sphere.c -lm 

あなたが見ているエラー:error: ld returned 1 exit statusがリンカld(オブジェクト・ファイルを結合し、GCCの一部)からです関数powがどこに定義されているかを見つけることができないからです。

を含むmath.hには、さまざまな機能の宣言があり、その定義はありません。 defは数学ライブラリlibm.aにあります。 pow()のような関数への呼び出しが解決されるように、あなたのプログラムをこのライブラリとリンクさせる必要があります。