ソース List7-11.c
#include
#include
double dist(double x1, double y1, double x2, double y2)
{
return ( sqrt( (x2 - x1) * (x2 - x1) + (y2 - y1 ) * (y2 - y1) ) );
}
int main(void)
{
double x1, y1;
double x2, y2;
printf(" <点1> X座標: "); scanf("%lf", &x1);
printf(" Y座標: "); scanf("%lf", &y1);
printf(" <点2> X座標: "); scanf("%lf", &x2);
printf(" Y座標: "); scanf("%lf", &y2);
printf("2点間の距離は%fです。\n", dist(x1, y1, x2, y2) );
return 0;
}
以下のようにコンパイルするとエラーになる
$ gcc list7-11.c -o list7-11
/tmp/ccJwiHTB.o: In function `dist':
list7-11.c:(.text+0x6d): undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました
gccがmath libraryにリンクできていないので、gccに-lmをオプションで渡して手動リンクさせる
以下のようにしてコンパイルするとエラーにならない
$ gcc list7-11.c -o list7-11 -lm
参考
gccでmath.hの関数を使うソースがコンパイルできない場合の対処法http://d.hatena.ne.jp/mickey24/20081008/1223463875