2010-05-17 61 views
9

當我試圖包括<math.h>我發現我需要使用命令gcc -lm是否可以從gcc中的C源代碼內部鏈接到數學庫?

到數學函數庫的鏈接,但我正在尋找另一種方式爲「代碼」的數學庫,不需要用戶進行編譯鏈接使用任何選項..

可以gcc -lm使用#pragma什麼的C代碼?

編輯:我已經改變了-ml-lm

回答

11

爲用戶(或實際上爲開發人員)簡化併發症的常用方法是編寫一個makefile。

+6

但是我看不出它是如何回答關於編譯指示的問題;) – 2010-05-17 15:05:21

5

首先,它是gcc -lm沒有沒有#pragma爲了給連接指令

4

不,你需要告訴鏈接程序庫中,以便鏈接鏈接圖書館。

鏈接器不知道代碼,只知道編譯的目標文件。它不會看到語言特定的附註。

2

不,gcc沒有鏈接庫的編譯指示。您必須使用命令行選項鍊接到數學庫(它的編號爲-lm而不是-ml

3

使用-lm是唯一選項。此外,使用#pragma這是微軟特有的,而且很髒。想象一下,有一個新的超高效的數學庫,它需要-lsupermath而不是-lm - 那麼你必須修改你的代碼而不是修改makefile或make config文件。

4

你不說哪個UNIX外殼使用的是的,但如果這僅僅是爲了方便地使用,簡單的寫一個shell函數:

gcm() { 
    gcc -lm $* 
} 

假如把它放在你的shell啓動文件,你可以編譯和鏈接與數學庫:

gcm mycode.c 
+3

我懷疑這在一般情況下是有用 – 2010-05-17 11:33:21