2009-05-20 21 views
1

私はlog10f()の使用に問題があります。 私はLinux(2.6.28-11-ジェネリック)とgcc(3.4.6)を使ってプログラムをコンパイルしています。log10f()は標準的な数学ライブラリの一部ではありませんか?

次のソースは実行時に1.000000をコンパイルして出力します。

#include <stdio.h> 
#include <math.h> 

int main() { 
    printf("%f\n", log10f(10)); 
    return 0; 
} 

1にはないとリンクエラーをスロー下回っている間:

#include <stdio.h> 
#include <math.h> 

int main() { 
    printf("%f\n", log10f(100)); 
    return 0; 
} 

エラー:未定義の参照

  1. をlog10fするには、(log10fです)の一部として定義されていません標準的な数学ライブラリ(マニュアルページは数学ライブラリの一部であることを示しています)

  2. なぜ2番目の例はコンパイルされないのですか?必要なlibm.aライブラリが自動的に実行可能ファイルにリンクされていないためだ

答えて

5

gccに-lmパラメータを追加する必要があります。リンカーはlibm.aも実行可能ファイルにリンクします。

+0

DR、ありがとうございます。最初の例では、-lmオプションを使用せず、まだコンパイルされていましたが、これは私に困惑しています。 – pgm

+0

リンクステップのような音は初めて実行されませんでした。 –

関連する問題