在c程序中用到math庫函數時,編譯成obj後,再生成執行文件時,會遇到類似下面的錯誤:
/tmp/ccalvMPY.o: In function `main':
/tmp/ccalvMPY.o(.text+0x40): undefined reference to
`pow'
原因:
因爲linux中, pow 函數定義在 libm.so中,
不像一般DevC++或TC是放在C語言的/lib下,
所以, C無法在連接時, 找到相對應的庫來連接.
解決方法:
編譯器有一些比較通用的參數,其中的-l用來標識要鏈接的庫信息:
-lm 表示需要鏈接數學庫libm.a或libm.so或libm.sl
使用如下編譯命令告訴程序數學庫的位置即可
gcc filename.c -lm |
或
gcc filename.c -lm -L/lib -L/usr/lib