gcc

2014年4月17日 (木)

[gcc]「`pow' に対する定義されていない参照です」

math.hをincludeして数学関係の関数を使用したプログラムをコンパイルした時に、以下のようなエラーメッセージが表示されることがある。

$ gcc -o ○○ ○○.c
/tmp/××.o: 関数 `××' 内:
○○.c:(.text+△△): `pow' に対する定義されていない参照です
○○.c:(.text+△△): `sqrt' に対する定義されていない参照です
○○.c:(.text+△△): `sin' に対する定義されていない参照です
○○.c:(.text+△△): `cos' に対する定義されていない参照です
○○.c:(.text+△△): `atan' に対する定義されていない参照です

これは、math.hに含まれる数学関係の関数を使用する時は、コンパイル時にオプション-lmを付けないと、必要なライブラリがリンクされないからである。

実行ファイルを作成するためには、オプション-lmを付けてコンパイルをすること。

$ gcc -o ○○ ○○.c -lm

ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道 GNU Make 第3版 明快入門 C (林晴比古実用マスターシリーズ) Introduction To Gcc Gcc 7.0 Gnu Openmp Intel Visual Fortran リファレンスガイド C/C++、FortranプログラマーのためのインテルParallel Stud―Windows、LinuxおよびMac OS 10
無料ブログはココログ