1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】 math.hヘッダーをインクルードしているのに、「undefined reference to sqrt」エラーが発生するのはなぜですか?[重複しています。]

2022-01-12 16:07:13

質問

#include <stdio.h>
#include <math.h>
int main(void)
{
  double x = 0.5;
  double result = sqrt(x);
  printf("The square root of %lf is %lf\n", x, result);
  return 0;
}

コンパイルしようとしています。

gcc test.c -o test

しかし、私はエラーが表示されます。

/tmp/cc58XvyX.o: In function `main':
test.c:(.text+0x2f): undefined reference to `sqrt'
collect2: ld returned 1 exit status

解決方法は?

実行ファイルをビルドする際に、数学ライブラリをリンクしておく必要があります。その方法は環境によって異なりますが、Linux/Unixの場合、単純に -lm をコマンドに追加してください。

gcc test.c -o test -lm

数学ライブラリの名前は libm.so であり、また -l コマンドオプションは lib プレフィックスと .a または .so というサフィックスがあります。