如果我們編譯一些使用名爲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. UNIX:靜態庫鏈接到靜態庫
- 3. 使用GCC鏈接靜態庫的正確方法
- 4. 使用GCC與靜態鏈接庫
- 5. GCC鏈接一個靜態庫
- 6. 與靜態庫鏈接的gcc
- 7. 從動態DLL訪問靜態鏈接庫中的靜態變量/函數
- 8. gcc ld:確定靜態庫的鏈接順序的方法
- 9. 如何將靜態庫鏈接到gcc的動態庫中
- 10. GCC如何從靜態庫
- 11. 在gcc中的靜態鏈接(mingw)
- 12. 在gcc中同時使用靜態鏈接庫和動態鏈接庫
- 13. 將靜態庫與C數學庫正確鏈接
- 14. 靜態局部變量C99靜態內聯函數
- 15. 靜態庫鏈接失敗
- 16. 鏈接到靜態庫
- 17. 靜態庫鏈接兩次
- 18. GCC鏈接kerberos靜態編譯CURL
- 19. Docker中的靜態鏈接Haskell程序
- 20. 靜態內聯函數的標識?
- 21. 靜態函數,內聯和模板?
- 22. 外部靜態函數聲明是否打破內部鏈接?
- 23. C編譯器優化(gcc):自動內聯非靜態函數vs靜態函數
- 24. 鏈接第三方靜態庫到另一個靜態庫
- 25. 將靜態庫鏈接到另一個靜態庫
- 26. 鏈接靜態庫,共享另一個靜態庫
- 27. 函數本地靜態變量是否阻止函數內聯?
- 28. 內聯函數調用靜態內聯函數
- 29. 靜態鏈接到動態庫。 glibc
- 30. 鏈接動態和靜態庫RCPP
嗨亞歷克斯,這也是我的懷疑。你能提供一些你的說法嗎?一般來說,我應該在哪裏查找這些信息? – Andrew 2010-12-08 16:54:29