《Beginning Linux Programming》第 4 章 limits.c 示例中調用 log(x * x + 3.21),編譯報 undefined reference to 'log'。
log() 屬於數學庫 libm,**不在默認 C 標準庫 (libc) 中**,需顯式鏈接。
#include <math.h>gcc limits.c -o limits -lm注意: -lm 必須放在源文件**後面**(GCC 鏈接器按順序解析符號)。
sin, cos, tan, sqrt, pow, exp, log, log10, floor, ceil 等均需 -lm。$ gcc -c limits.c # 編譯通過(只檢查語法)
$ gcc limits.o -o limits # 鏈接報錯 undefined reference to log
$ gcc limits.c -o limits -lm # 正確:編譯+鏈接一步到位
C 標準庫分 libc (默認) 和 libm (數學)。用到 math.h 函數,**編譯加 -lm** 是鐵律。