2011年10月21日星期五

gcc 4.x link lib

最近寫程式發現,以前能編譯的代碼突然無法運行
例如在代碼裏要使用sqrt function,gcc需要在編譯時連結到libm
所以需要用加上-lm參數
以前是:gcc -lm a.c
但現在:gcc a.c -lm
看上去好像沒分別但其實新版的gcc規定了-l選項的位置,只會對前面的代碼有效
例如gcc a.c -lm b.c這樣libm只會在a.c裏有效,在b.c就不可以使用math.h

所以我用以前的方法來編譯就會出錯:
undefined reference to `sqrt'
發佈留言

熱門文章