11
Q
工具庫的依賴
A
回答
16
這取決於「檢測庫依賴性」究竟意味着什麼。
ldd
命令適用於共享庫,而不僅僅是可執行文件。它將顯示圖書館建當共享庫的依賴性聲明:
$ ldd /usr/lib/libgtk-3.so
linux-vdso.so.1 (0x00007ffff8fff000)
libgdk-3.so.0 => /usr/lib/libgdk-3.so.0 (0x00007f43fcf47000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007f43fcd43000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007f43fcb36000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f43fc7fc000)
...
阿庫可以具有由與未聲明爲依賴關係進一步庫鏈接獲得的未定義的符號。您可以使用objdump -T
或nm -D
來顯示動態符號 - 未定義的符號(那些應該來自其他庫)將顯示爲*UND*
:
$ objdump -T /usr/lib/libgtk-3.so | head
/usr/lib/libgtk-3.so: file format elf64-x86-64
DYNAMIC SYMBOL TABLE:
0000000000066e38 l d .init 0000000000000000 .init
0000000000000000 DF *UND* 0000000000000000 g_param_spec_object
0000000000000000 DF *UND* 0000000000000000 g_utf8_validate
0000000000000000 DF *UND* 0000000000000000 g_date_get_month
0000000000000000 DF *UND* 0000000000000000 g_bookmark_file_get_visited
0000000000000000 DF *UND* 0000000000000000 g_value_get_float
從這些符號名稱應該可以推斷出未申報庫的依賴。
使用pkg-config
或類似配置機制的庫有時無法在構建時聲明它們的依賴關係,而是依賴於庫用戶使用該工具來獲取依賴關係,從而聲明依賴關係爲pkg-config
。 pkg-config --libs
將以編譯器所理解的格式列出相關性:
$ pkg-config --libs gtk+-3.0
-lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0
相關問題
- 1. Java的類依賴工具
- 2. 類依賴關係工具
- 3. require.js依賴分析工具
- 4. VB6依賴/ NDepend類型的工具
- 5. 是否有JavaScript的依賴管理工具/庫?
- 6. 動態鏈接庫具有依賴性
- 7. java依賴關係分析工具
- 8. Clutter工具包依賴關係 - Ubuntu 11.04
- 9. 下拉依賴敏捷工具包
- 10. 尋找「依賴間諜工具」
- 11. JNI依賴庫
- 12. java語言工具庫,無法找到依賴關係
- 13. 彈簧工具套件maven項目添加庫依賴關係
- 14. 請求工廠在GWT,庫依賴項
- 15. 具有多種工具和依賴關係的Bitbucket CI管道
- 16. JNI UnsatisfiedLinkError依賴庫
- 17. Maven Spring依賴庫
- 18. 共享庫,庫依賴性
- 19. 結構圖 - 具有依賴關係的安裝依賴關係
- 20. 依賴注入和具體的依賴實現
- 21. mvn依賴關係:具有傳遞性依賴關係的樹
- 22. 創建具有依賴性和測試依賴性的jar
- 23. dlopening一個依賴的庫
- 24. 刪除庫的依賴
- 25. cryptopp國外庫的依賴
- 26. SBT忽略庫的依賴
- 27. 依賴Unity的Android庫3d
- 28. 工作依賴於RabbitMQ的
- 29. Hudson依賴的工作
- 30. 存儲庫(.NET MVC項目)靜態工具類的依賴問題
bravo!很好地解釋。祝你們好運。 – shellter
謝謝!很好解釋,我只需要關於桁架和nm的使用的更多信息。 –