私はCに非常に新しいだと私はこのコードを持っている:math.hヘッダーをインクルードしても、「未定義のsqrtへの参照」エラーが発生するのはなぜですか?
#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
なぜこれが起こるのですか? sqrt()
は、math.h
ヘッダファイルに含まれていませんか?私はcosh
と他の三角関数で同じエラーが発生します。どうして?
なぜ、 'libm'に標準ライブラリの一部が含まれていても、なぜデフォルトでリンクされていないのか、いくつかの推測があります:http://stackoverflow.com/questions/1033898/why-do-you-have-ライブラリへのリンクライブラリ –
これは複製です:http://stackoverflow.com/q/5248919/694576 – alk