我是C/C++的新手,我有這個簡單的問題。當我輸入編譯命令時,我不知道何時需要鏈接庫。如果我是對的,我會添加參數-l,後跟我想包含的庫的名稱。但是,如果我用C的數學庫進行工作,我是否添加了類似-lmath的內容來編譯我的程序?或者當我在某處閱讀時,僅僅需要使用C外部庫時?什麼是C外部庫?任何人都可以解釋我嗎?謝謝。我什麼時候必須鏈接C語言庫?
0
A
回答
4
大多數編譯器在鏈接時默認會包含語言的標準庫。 gcc將包含C標準庫(libc),並且g ++將添加C++標準庫(libC++)。在某些系統上,您可能會發現自己的數學增加了-lm
,實時擴展增加了-lrt
,但這些庫通常會在覈心語言之外添加功能(儘管有時是非常常用的功能)。
1
數學是標準庫的一部分,因此您不必鏈接它。其他一切應該聯繫起來。
(編輯:並非總是如此 - 請查看下面的註釋)
例如,如果您在代碼printf,strcmp和pthread_create中使用,則不必爲printf和strcmp鏈接任何內容。只要包括正確的標題,你就沒問題。然而,pthread_create不是標準庫的一部分,所以你必須鏈接到它 - -lpthread。
相關問題
- 1. 什麼時候必須圍繞try/catch?
- 2. 什麼時候我必須處理我的上下文
- 3. 什麼樣的代碼我必須在OnCreate()和什麼時候我必須把它放在OnCreateView()?
- 4. 交叉編譯時,我必須用C++庫做些什麼?
- 5. 我什麼時候必須使用scikit的fit方法學習?
- 6. 我什麼時候必須明確地打開一個SqlConnection?
- 7. 什麼時候我必須使用boost :: asio:strand
- 8. 什麼時候必須要在C++類中定義析構函數,爲什麼?
- 9. 在c中實現字符串隊列我什麼時候必須使用malloc
- 10. 什麼時候我們必須在C#中使用extern別名關鍵字?
- 11. 什麼時候我們必須在C#中使用checked運算符?
- 12. 爲什麼我必須在這裏放置我的動態鏈接庫?
- 13. 爲什麼你必須鏈接庫和設置包含目錄
- 14. 什麼是PostgreSQL函數,什麼時候我必須使用它們?
- 15. 爲什麼我必須鏈接引用程序集?
- 16. 爲什麼我必須明確鏈接libm?
- 17. 使用C語言中的setjmp和longjmp鏈接到C++庫時
- 18. 我必須爲NULL指針的malloc?我什麼時候需要爲malloc指針?
- 19. 這是什麼意思? 「錯誤:`rhs`必須是語言對象」
- 20. 語言必須支持遞歸的屬性是什麼?
- 21. 語言必須支持遞歸的屬性是什麼?
- 22. 爲什麼有時我必須parseJSON,有時候不需要做Ajax請求?
- 23. 什麼時候必須在Tensorflow中初始化變量?
- 24. 什麼時候你必須在iPhone SDK中使用@property和@synthesize?
- 25. 爲什麼在C++語言中使用命名空間標準是必須的?
- 26. c語言中鏈接和加載的區別是什麼
- 27. 何時以及爲什麼我們必須實現Comparable接口?
- 28. 鏈接語言
- 29. 什麼時候和爲什麼必須更改產品guid進行升級?
- 30. 什麼時候我必須在VB6中設置一個變量爲「Nothing」?
有時你必須鏈接到數學庫才能使用標準的數學函數。 –
好的,對。我認爲他正在討論math.h中的函數,據我所知,它是標準庫的一部分。 –
在Solaris上(例如),math.h函數需要明確鏈接到libm。 – Joe