linux下用gcc編譯使用了math庫函數的程序出錯的解決方法

在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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章