如果我們編譯一些使用名爲lib.a的靜態庫的源代碼,lib.a中的內聯函數是否會與剩餘的二進制文件正確內聯?gcc靜態鏈接程序能否從靜態庫中正確內聯函數?
0
A
回答
0
不,他們不會。內聯是分析樹上的一項操作,需要訪問內聯代碼的主機和捐助源的源代碼。
靜態庫在您使用它們時已經從源代碼編譯爲二進制文件,因此內聯不會發生。
但是,未內聯的代碼也是「正確的」,並且功能正常(假設它已被編譯到靜態庫中)。
0
那麼,因爲爲了嘗試調用內聯函數,它的聲明必須在調用站點可見。如果是inline
,那麼編譯器會將其內聯或完全忽略該請求。
如果您想知道在鏈接到最終產品時,庫中內聯的非內聯函數是否可以內聯......這取決於實現,並假設它已經具備了LTO因爲它是向圖書館提供的),它可能能夠再次將它們內聯。儘管......可能會被要求引導實現包括定義,即使它們已經被內聯了,但都取決於實現。
http://crazyeddiecpp.blogspot.com/2010/12/inline-functions-and-you.html
相關問題
- 1. gcc靜態鏈接
- 2. 級聯靜態庫鏈接?
- 3. 直接告訴gcc靜態鏈接庫
- 4. Qt5.1.0靜態鏈接,「該應用程序不能靜態鏈接到fftreal庫」
- 5. 鏈接靜態庫與靜態庫
- 6. UNIX:靜態庫鏈接到靜態庫
- 7. GCC鏈接的靜態庫失敗
- 8. GCC:列出一個靜態鏈接庫
- 9. 使用GCC與靜態鏈接庫
- 10. GCC鏈接一個靜態庫
- 11. 與靜態庫鏈接的gcc
- 12. 從動態DLL訪問靜態鏈接庫中的靜態變量/函數
- 13. gcc ld:確定靜態庫的鏈接順序的方法
- 14. GCC靜態庫鏈接VS動態鏈接
- 15. 靜態鏈接庫
- 16. Visual Studio:靜態鏈接到靜態庫
- 17. 如何將靜態庫鏈接到gcc的動態庫中
- 18. GCC如何從靜態庫
- 19. 在gcc中的靜態鏈接(mingw)
- 20. 靜態鏈接glibc,但動態使用GCC動態鏈接glibc
- 21. 在gcc中同時使用靜態鏈接庫和動態鏈接庫
- 22. 類中的靜態內聯函數
- 23. libc中的靜態內聯函數
- 24. 將動態庫鏈接到鏈接到其他靜態庫的靜態庫
- 25. 將靜態庫與C數學庫正確鏈接
- 26. 靜態局部變量C99靜態內聯函數
- 27. 內聯靜態函數和靜態變量
- 28. 在另一個靜態庫中鏈接靜態庫
- 29. 靜態庫鏈接兩次
- 30. C靜態鏈接庫嗎?
嗨亞歷克斯,這也是我的懷疑。你能提供一些你的說法嗎?一般來說,我應該在哪裏查找這些信息? – Andrew 2010-12-08 16:54:29