ここにサンプルファイルがあります:
#include <stdio.h>
#include <math.h>
int main(){
printf("%f\n", log(10));
}
私がそれをコンパイルするとgcc sample.c -o a
、うまく動作します。で実行でき、期待どおり./a
の出力が生成2.302585
されます。
それでも、私のファイルが次のようになっている場合:
#include <stdio.h>
#include <math.h>
int main(){
double a = 10;
printf("%f\n", log(a));
}
ではコンパイルされませんgcc sample.c -o a
。代わりに、gcc sample.c -o a -lm
「数学をリンクする」ように明らかに指示できるように使用する必要があります...それは私が実際には従わないところです.最初の例で数学をリンクする必要がないのはなぜですか? そして、「数学をリンクする」必要があるとは、正確にはどういう意味ですか? C コンパイラを使用するのは久しぶりなので、質問が下手だったらすみません。