說我有一個libmy.a靜態庫,我想知道它動態鏈接的庫。其實我需要以下內容:我將創建一個新的動態lib,說libmy2.so它將鏈接說.o文件(對象文件)和libmy.a。所以我想知道什麼庫最終會加載libmy2.so。我如何知道哪些庫被動態鏈接到靜態庫中?
2
A
回答
1
靜態庫不會鏈接其他靜態或動態庫。 OK,假設有兩個C++文件,a.cpp和b.cpp。
g++ -c a.cpp -o a.o // compile a.cpp to a.o
rm -f lib1.a // no existing lib1.a (this is not essential)
ar rvs lib1.a a.o // create library lib1.a and add a.o to it
g++ -c b.cpp -o b.o // compile b.cpp to b.o
ar rvs lib1.a b.o // ad b.o to existing lib1.a
顯而易見,您可以在各個階段之間進行任意數量的複製以生成具有所需名稱的庫。你也可以做
ar --help
獲得可能略微簡化的過程中AR選項。坦率地說,這是一個我幾乎從不使用的命令,除了從對象列表中構建靜態庫。
0
可以使用folllowing命令檢查靜態庫的內容:
nm -C libname.a | less
或
$ar -vt libname.a
0
在Mac上
,這將是 納米-mÇlibName.a的
0
動態庫只會動態鏈接到您在構建它時使用-l
指定的動態庫。靜態庫主要是鏈接表示一組* .o文件的時間實體,並且它們必須由鏈接器處理以生成可執行代碼,因此不需要在構建靜態庫時提供所有實現。所有這些都是在目標可執行文件的最終鏈接期間設置的。
相關問題
- 1. UNIX:靜態庫鏈接到靜態庫
- 2. 如何將靜態庫鏈接到gcc的動態庫中
- 3. 靜態鏈接到動態庫。 glibc
- 4. 什麼是靜態庫,靜態鏈接動態庫和動態鏈接動態庫的.lib文件?
- 5. 鏈接到靜態庫
- 6. 鏈接動態和靜態庫RCPP
- 7. 靜態和動態庫鏈接
- 8. 如何知道ELF需要哪些動態庫?
- 9. 如何在Eclipse中將靜態庫鏈接到靜態庫中CDT
- 10. 如何使用gcc4將靜態庫(存檔)鏈接到空的動態庫中
- 11. 如何鏈接靜態庫中的Android
- 12. 鏈接第三方靜態庫到另一個靜態庫
- 13. 將靜態庫鏈接到另一個靜態庫
- 14. 與MSVC中的靜態庫和動態庫鏈接
- 15. 鏈接到Xcode中的庫 - 靜態或動態
- 16. 如何將一個庫靜態鏈接到另一個靜態庫?
- 17. 靜態庫鏈接失敗
- 18. 靜態庫鏈接兩次
- 19. 在gcc中同時使用靜態鏈接庫和動態鏈接庫
- 20. 如何靜態鏈接C#ClassLibrary的庫?
- 21. 你如何靜態鏈接Boost庫?
- 22. 如何使用WAF鏈接靜態庫?
- 23. 如何靜態鏈接libcurl,libssl,uuid庫?
- 24. Xamarin.Android:你如何鏈接靜態庫?
- 25. 如何鏈接自定義靜態庫?
- 26. 如何鏈接到動態提升庫?
- 27. 如何將gcc中的靜態庫與其他動態庫鏈接?
- 28. 靜態庫自動發現和鏈接
- 29. 克++鏈接靜態庫成一個動態庫(不-fPIC)
- 30. 可能將我的靜態庫與Xcode中的動態庫鏈接?
特別是,你有沒有意識到我不能建立一個靜態鏈接庫,靜態鏈接其他庫? – Narek 2011-05-27 17:31:52
@Narek是的 - 應用程序或共享庫可以鏈接到其他靜態或共享庫,但靜態庫不能,因爲它們只是對象文件的歸檔。 – 2011-05-27 17:34:44
鏈接到一個目標文件的一堆目標文件,即一個靜態庫,並得到對象文件+ 1靜態庫的邊界? – Narek 2011-05-27 17:37:22