
No.2ベストアンサー
- 回答日時:
正確には、コンパイルできないのではなく、コンパイルしたオブジェクトをロード(オブジェクト間の依存関係を解決し、必要なライブラリを読み込んで実行モジュールを生成すること; リンクともいいます)するときに数学関数ライブラリを読み込んでいないために、関数の実体がないということでえらーになっています。
libcというデフォルトで読み込まれるライブラリには、数学関数が含まれていないのが普通です。ロード時に読み込んでもらうよう明示的に書く必要があります。
ldまたはccのコマンドラインに -lm というオプションを記述することで、数学関数ライブラリ(libm)を読み込ませることができます。
返事遅れてすいません。
詳しい説明ありがとうございます。オプション-lmを付けないと数学関数はリンクする時に読み込まれないのですね。
ありがとうございました。
No.4
- 回答日時:
#2です。
#3さんの回答のとおりの可能性もありますが、エラーメッセージが
undefined reference to `sqrt'
というものであれば、ロード(リンク)時のエラーです。
私のところでは、 glibc2の環境ですが、-lm をつけないと上記のエラーがでます。
何度も返事ありがとうございます。
出ていたのはまさしくこのメッセージでした。
リンク時のエラーのようで-lmを付けることによりで解決できました。
ありがとうございました。
No.3
- 回答日時:
お名前から想像するに、Linux ですか。
>>関数sqrt()は定義されていません...
のエラーは、コンパイル時ですか、リンク時ですか。
リンク時なら、これまでの回答で良いかも知れません。
(但し、-lm が Linux でも通る?)
コンパイル時のエラーなら、stdio.h などの並びの math.h を
開いて、使用する関数があるか見てください。
多分、更に他の header file を見ているのでは。
関数の prototype がなければ、再度インストールが必要です。
返事ありがとうございます。
1と2の方の方法で解決できたので、リンク時のエラーのようでした。Linuxですが-lmも通り、無事に動きました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
math.hに含まれる関数が使えない
-
実行後にコンパイルに失敗しま...
-
アプリケーションのDLLファイル...
-
C90とC99の計算結果の違い?
-
c言語です コンパイルした時に...
-
シリアル通信の受信待ちについて
-
FFTWでコンパイルができません。
-
共有ライブラリの内容確認について
-
vba コンパイル
-
サクラエディタとコンパイラ
-
gcc コンパイル killed
-
NASMとMASMの違い
-
CMakeでfortranをコンパイルしたい
-
define文のパラメータを実行時...
-
#If VBA7 Thenに関して
-
Cのソースを毎回コンパイルし...
-
notepad++でのコンパイル設定
-
AdobeReader8.0の機能を使って...
-
Visual C++でC言語も使える?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
C言語で作ったらWindowsでもMac...
-
64ビットのlinuxで32ビットメモ...
-
gcc バージョン違いによるコン...
-
[COBOL] ソースの復帰
-
C#で char型とstring型の比較で...
-
gccでc++プログラムをコンパイ...
-
実行後にコンパイルに失敗しま...
-
ビープ音が鳴りません・・・
-
シリアル通信の受信待ちについて
-
VB ネイティブコンパイルについて
-
Cygwinで使用しているgccをダウ...
-
同じEXE・同じファイルで解析結...
-
math.hに含まれる関数が使えない
-
Verilog_HDLでのdefineとifdef
-
プレコンパイルの意味を教えて...
-
#If True Then の # って何??
おすすめ情報