說我有一個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. 將動態庫鏈接到鏈接到其他靜態庫的靜態庫
- 2. UNIX:靜態庫鏈接到靜態庫
- 3. 如何將靜態庫鏈接到gcc的動態庫中
- 4. 如何創建自動鏈接到動態庫的靜態庫?
- 5. 將動態庫鏈接到一個靜態庫(又名預鏈接動態庫)
- 6. 靜態鏈接到動態庫。 glibc
- 7. 與cmake如何靜態鏈接一些庫和其他動態?
- 8. Visual Studio:靜態鏈接到靜態庫
- 9. 鏈接靜態庫與靜態庫
- 10. 什麼是靜態庫,靜態鏈接動態庫和動態鏈接動態庫的.lib文件?
- 11. 鏈接到靜態庫
- 12. 靜態鏈接庫
- 13. 如何鏈接到靜態庫?
- 14. 靜態和動態庫鏈接
- 15. 靜態和動態鏈接庫
- 16. 鏈接動態和靜態庫RCPP
- 17. 如何知道ELF需要哪些動態庫?
- 18. 如何在Eclipse中將靜態庫鏈接到靜態庫中CDT
- 19. 將靜態庫鏈接到共享庫?
- 20. 將靜態C++庫鏈接到c庫
- 21. 動態庫加載與鏈接到靜態庫
- 22. 如何鏈接靜態庫中的Android
- 23. 如何靜態鏈接MSVC中的庫?
- 24. 如何鏈接一個本身與動態庫鏈接的靜態庫?
- 25. 鏈接第三方靜態庫到另一個靜態庫
- 26. 將靜態庫鏈接到另一個靜態庫
- 27. 與MSVC中的靜態庫和動態庫鏈接
- 28. 鏈接到Xcode中的庫 - 靜態或動態
- 29. 在另一個靜態庫中鏈接靜態庫
- 30. 如何將一個庫靜態鏈接到另一個靜態庫?
特別是,你有沒有意識到我不能建立一個靜態鏈接庫,靜態鏈接其他庫? – Narek 2011-05-27 17:31:52
@Narek是的 - 應用程序或共享庫可以鏈接到其他靜態或共享庫,但靜態庫不能,因爲它們只是對象文件的歸檔。 – 2011-05-27 17:34:44
鏈接到一個目標文件的一堆目標文件,即一個靜態庫,並得到對象文件+ 1靜態庫的邊界? – Narek 2011-05-27 17:37:22