ソース 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
 
0 コメント:
コメントを投稿