C語言調用庫文件后在Linux終端編譯的方法 -开发者知识库

C語言調用庫文件后在Linux終端編譯的方法 -开发者知识库,第1张

    學習c語言,不可避免的要遇到很多的問題。作為剛剛入門的我更不例外,在以后的日子里我將和大家分享以下在學習c語言中遇到的問題。

    第一個問題是關於數學函數的,我們都知道在c語言中可以引用很多的庫函數,很常用的一個便是數學庫。在c語言中引進數學函數無疑大大提高了我們的效率,而且操作簡單,只需要在文件開頭把math.h文件包含進去。我自己學習時簡單的編寫了個小程序,在其中調用了sqrt函數,但是我在對源文件進行編譯時卻出現了問題,終端顯示:

  /tmp/ccPss1sS.o:在函數‘main’中:
y.c:(.text 0x2c):對‘sqrt’未定義的引用
collect2: 錯誤:ld 返回 1

       程序報錯說沒有對函數進行定義!這就奇怪了,明明在頭文件中已經加入了math.h為什么還是報錯呢?后來,在網上的資料中看到,如果調用了除標准輸出庫文件以外的庫文件,例如:數學庫、線程庫等,都是要在gcc命令后面加上-l以及庫文件的名字實現的。例如:調用數學庫是gcc -lm 調用線程庫要用gcc -lptread。

     在以上的操作都是在gcc的4.8.3版本下進行的。在gcc新的版本中會發生了一些變化,比如-lm要加在文件名的后面這種情況,但是基本原理都是這樣的!:-)

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复