我承認這是一個家庭作業問題,詢問這是否可能。我相信答案是肯定的,但我不知道「爲什麼?」這個問題的答案。對我來說,似乎答案只是'爲什麼不是'?......任何人都可以提供一些更深入的見解,說明爲什麼這是真實的(或者如果我錯了,那麼是不真實的)?看起來這個問題只會被問到是否有一個棘手的部分,但從我所瞭解的編譯來看,似乎沒有任何東西會禁止鏈接到兩者。UNIX:將可執行文件鏈接到靜態庫和動態庫?
回答
是的,當然你可以鏈接一個靜態庫和一個動態庫。鏈接到一個靜態庫基本上與從檔案中獲取所需的對象文件並將它們包括在鏈接過程中相同。
如果您要鏈接的靜態庫和動態庫是針對庫,則動態鏈接是冗餘的。它仍然被允許完成,但它是沒有意義的(並且只是爲可執行文件引入了不必要的運行時依賴項,至少在Unix上)。
在一些像FreeBSD和Linux這樣的鏈接器符號空間的* nixes上,實際上可能不可能鏈接相同的靜態庫和共享庫。 –
通常,應該沒有理由不能鏈接到靜態和動態庫,特別是如果它們不衝突(例如,提供相同的符號)。這樣做的機制會因編譯器而異,但許多免費軟件項目實際上都是這樣做的 - 他們靜態構建所謂的「便利庫」,然後將其鏈接到動態鏈接的可執行文件中。
我想這就是爲什麼我無法回答「爲什麼?」的問題。看起來好像只是因爲沒有理由你不能。 –
@Logan我能想到的最好的答案是鏈接器命令行上的一系列對象(ao bo co)和包含它們的靜態庫(鏈接器的視圖)之間幾乎沒有區別(libfoo.a )。在第一種情況下,顯然您也可以鏈接到共享庫,因此,由於第二種情況幾乎相同,因此您可以將其與共享庫鏈接起來。 –
- 1. UNIX:靜態庫鏈接到靜態庫
- 2. 將動態庫鏈接到鏈接到其他靜態庫的靜態庫
- 3. VS2015如何將靜態庫鏈接到其他庫和可執行文件?
- 4. 什麼是靜態庫,靜態鏈接動態庫和動態鏈接動態庫的.lib文件?
- 5. 鏈接到靜態庫來構建靜態可執行
- 6. 將動態庫鏈接到一個靜態庫(又名預鏈接動態庫)
- 7. 從可執行文件中提取靜態鏈接的庫
- 8. CMake Visual Studio鏈接可執行文件與靜態庫
- 9. 靜態和動態庫鏈接
- 10. 靜態和動態鏈接庫
- 11. 鏈接動態和靜態庫RCPP
- 12. 靜態鏈接到動態庫。 glibc
- 13. 在可執行文件中找不到C++動態鏈接庫
- 14. 將靜態庫鏈接到共享庫?
- 15. 將靜態C++庫鏈接到c庫
- 16. 將靜態和動態庫鏈接到同一個可執行文件的原因有哪些問題?
- 17. 如何將外部庫靜態鏈接到我的可執行文件中?
- 18. 加載鏈,靜態庫和可執行文件
- 19. 如何將靜態庫鏈接到gcc的動態庫中
- 20. Visual Studio:靜態鏈接到靜態庫
- 21. 鏈接靜態庫與靜態庫
- 22. 將靜態庫鏈接到另一個靜態庫
- 23. 谷歌測試可執行文件或靜態/動態庫?
- 24. 鏈接到靜態庫
- 25. 靜態鏈接庫
- 26. 如何創建自動鏈接到動態庫的靜態庫?
- 27. 靜態鏈接的可執行文件比動態鏈接的可執行文件更快嗎?
- 28. 是否有可能將靜態庫鏈接到Visual Studio中的動態庫?
- 29. 靜態庫自動發現和鏈接
- 30. 將靜態庫鏈接到一個DLL
你會怎麼做?你試過了嗎?它有用嗎? ;-) 祝你好運! – shellter