Linux下編譯C代碼,出現tan函數報錯的情況

來源:互聯網
上載者:User

標籤:style   color   使用   檔案   問題   代碼   

undefined reference to `tan‘

但是已經包含了標頭檔 <math.h>了,可還是報錯,說是找不到tan

 

這個問題的原因不是很清楚, 但是網上給出的方案,就是編譯的時候 加上參數 -lm  

有說l表示Lib ,m表示 math.h  ,

 

******************************************************************************************************

以下是一些說明

使用math.h中聲明的庫函數還有一點特殊之處,gcc命令列必須加-lm選項,因為數學函數位於libm.so庫檔案中(這些庫檔案通常位 於/lib目錄下),-lm選項告訴編譯器,我們程式中用到的數學函數要到這個庫檔案裡找。本書用到的大部分庫函數(例如printf)位於 libc.so庫檔案中,使用libc.so中的庫函數在編譯時間不需要加-lc選項,當然加了也不算錯,因為這個選項是gcc的預設選項。     C標準主要由兩部分組成,一部分描述C的文法,另一部分描述C標準庫。C標準庫定義了一組標準標頭檔,每個標頭檔中包含一些相關的函數、變數、類型 聲明和宏定義。要在一個平台上支援C語言,不僅要實現C編譯器,還要實現C標準庫,這樣的實現才算符合C標準。不符合C標準的實現也是存在的,例如很多單 片機的C語言開發工具中只有C編譯器而沒有完整的C標準庫。 在Linux平台上最廣泛使用的C函數庫是glibc,其中包括C標準庫的實現。幾乎所有C程式都要調用glibc的庫函數,所以glibc是Linux 平台C程式啟動並執行基礎。glibc提供一組標頭檔和一組庫檔案,最基本、最常用的C標準庫函數和系統函數在libc.so庫檔案中,幾乎所有C程式的運行 都依賴於libc.so,有些做數學計算的C程式依賴於libm.so,以後我們還會看到多線程的C程式依賴於libpthread.so。以後我說 libc時專指libc.so這個庫檔案,而說glibc時指的是glibc提供的所有庫檔案。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.