C言語関係掲示板

過去ログ

No.189.math.hリンクエラー


No.1200

math.hについての質問
投稿者---hiro(2002/03/07 02:23:52)


Cのプログラムで、算術関数cos()やsin()を
使いたいのですが、math.hを宣言しているにも
かかわらず、undefined reference to `sin'
と出てしまいます。以下に示した確認のためのテストプログラムを
他のパソコンで試してみたところ、そのパソコン上ではきちんと
コンパイル&実行ができました。
同じmath.hでも何か違っていたりするのでしょうか?
どなたか、御教授宜しくお願いします。
ちなみにエラーが出てしまったパソコンのOSはRedHat7.1です。
確認のために使用したテストプログラムは以下の通りです。

#include<stdio.h>
#include<math.h>
main()
{
printf("%f \n", sin(1));
}

No.1208

Re:math.hについての質問
投稿者---ともじ(2002/03/07 12:54:50)


こんにちは。

> Cのプログラムで、算術関数cos()やsin()を
>使いたいのですが、math.hを宣言しているにも
>かかわらず、undefined reference to `sin'
>と出てしまいます。

おそらく、リンカーの設定にmathlibの指定が抜けているのでしょう。
LSIC-86試食版ですと、過去ログにあるような問題が生じます。
makefileの設定を見直してみてください。



No.1209

Re:math.hについての質問
投稿者---かずま(2002/03/07 14:15:18)


>おそらく、リンカーの設定にmathlibの指定が抜けているのでしょう。

最初の質問者は「OSはRedHat7.1です」と言っているのですから、
コンパイラが LSI C-86 ということはないでしょう。Linux だから、
gcc ですね。
コンパイルのコマンドラインの最後に -lm オプションをつけて、
/usr/lib/libm.a がリンクされるようにしてください。

#include <math.h> は、sin の引数が double で、double を返します
よ、と宣言しているだけで、リンクの指示を与えるわけではありません。



No.1215

Re:math.hについての質問
投稿者---ともじ(2002/03/07 17:32:22)


>最初の質問者は「OSはRedHat7.1です」と言っているのですから、

すみません。本当、RHLですね。


No.1354

Re:math.hについての質問
投稿者---hiro(2002/03/30 03:10:12)


返事が遅れて申し訳ございませんでした。
御指摘通り、-lmを付けたらすんなりとコンパイルできました。

大変ありがとうございました。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.14
Copyright(c) 2000-2002 TOMOJI All Rights Reserved