2010-11-30 149 views
3

我無法記住將包含文件鏈接到GCC時鍵入的內容,實際上我記得的唯一一個是-lm(對於math.h)。我現在特別關心的是sys/time.h在GCC中鏈接包含文件

This page清除了一些東西,但我仍然喜歡列表。

有誰知道一個很好的鏈接選項列表?

編輯:

也許我的問題不明確。我想知道我需要在命令行輸入什麼(如數學的-lm或pthread的-lpthread),以便在製作C程序時可能需要鏈接的各種庫。

回答

0

我不知道我理解你的問題,但-lm不是ld 選項,-l是一個選項,-lx鏈接libx.a(或.so,它取決於)。你可能想看看ld手冊中的完整選項列表。
我覺得比其他數學的所有其他標準庫都包含在libc.so(.a)中(-lc)

+0

`libcrypt`,`libdl`,`libpthread`,`libresolv`和`librt`都包含更多不在`libc`和`libm`中的標準C/POSIX函數。許多人會認爲`libz`也是一個標準的系統庫。 – ephemient 2010-11-30 22:52:55

1

<sys/time.h>提供的功能在libc.so(C庫)來實現。您不需要鏈接任何其他內容,因爲gcc應該自動鏈接到libc.so。沒有'包含文件的鏈接',而是鏈接到包含由代碼定義的符號的庫。

-l標誌是GCC's linker options之一,用於指定要鏈接的附加庫。

編輯,因爲我的gcc在編譯時執行對我的源代碼優化

此外,在該鏈接的信息是有點過時 - 你不應該需要一個明確的聯繫 libm(這是什麼 -l m-lm)在現代海合會。

+0

哇,這是什麼時候發生的? http://stackoverflow.com/questions/1033898/why-do-you-have-to-link-the-math-library-in-c/1033940#1033940我很確定這是一年前準確的... – ephemient 2010-11-30 21:49:58