2012-05-08 81 views
0

我是C/C++的新手,我有這個簡單的問題。當我輸入編譯命令時,我不知道何時需要鏈接庫。如果我是對的,我會添加參數-l,後跟我想包含的庫的名稱。但是,如果我用C的數學庫進行工作,我是否添加了類似-lmath的內容來編譯我的程序?或者當我在某處閱讀時,僅僅需要使用C外部庫時?什麼是C外部庫?任何人都可以解釋我嗎?謝謝。我什麼時候必須鏈接C語言庫?

回答

4

大多數編譯器在鏈接時默認會包含語言的標準庫。 gcc將包含C標準庫(libc),並且g ++將添加C++標準庫(libC++)。在某些系統上,您可能會發現自己的數學增加了-lm,實時擴展增加了-lrt,但這些庫通常會在覈心語言之外添加功能(儘管有時是非常常用的功能)。

1

數學是標準庫的一部分,因此您不必鏈接它。其他一切應該聯繫起來。 (編輯:並非總是如此 - 請查看下面的註釋)

例如,如果您在代碼printf,strcmp和pthread_create中使用,則不必爲printf和strcmp鏈接任何內容。只要包括正確的標題,你就沒問題。然而,pthread_create不是標準庫的一部分,所以你必須鏈接到它 - -lpthread。

+4

有時你必須鏈接到數學庫才能使用標準的數學函數。 –

+0

好的,對。我認爲他正在討論math.h中的函數,據我所知,它是標準庫的一部分。 –

+0

在Solaris上(例如),math.h函數需要明確鏈接到libm。 – Joe

相關問題