118

重複の可能性:
C で pow() を使用する際の問題
は、「pow」への未定義の参照です

大学の簡単なコースワークで少し問題があり、本当に困惑しています。

基本的に、特定の半径から球の体積を計算するプログラムを作成する必要があります。pow()単に , を使用して追加のブラウニー ポイントを使用するのではなく、関数を使用すると思ってr*r*rいましたが、コンパイラは次のエラーを表示し続けます。

「pow」collect2 への未定義の参照: エラー: ld が 1 つの終了ステータスを返しました

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

#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 マシンでは code::blocks で正常にコンパイルおよび実行されますが、自宅の Fedora 17 では、コマンド ライン コンパイラが実行を拒否します。どんな考えでも大歓迎です!

祝福、イアン

4

1 に答える 1

248

数学ライブラリとリンクする必要があります:

gcc -o sphere sphere.c -lm

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

インクルードmath.hすると、定義ではなく、さまざまな関数の宣言が取り込まれます。def は数学ライブラリにありますlibm.a。pow() などの関数の呼び出しが解決されるように、プログラムをこのライブラリとリンクする必要があります。

于 2012-10-10T16:30:06.850 に答える