簡體   English   中英

從.so/.o 文件中獲取 c/cpp 中 static 庫的列表

[英]get list of static libraries in c/cpp from .so/.o files

我一直在嘗試從文件中獲取static 和動態依賴項 我有源代碼和 unstipped bin 文件,為了獲得所有動態依賴項,我使用了這一行及其工作

readelf -d $1 | grep "NEEDED\|RPATH" | perl  -pe 's/.*\[(.*)\]/$1/

我的問題是 static 庫,當我使用命令時:

nm path/to/so

我得到的是函數的名稱而不是文件的名稱。 有沒有辦法查看每個二進制文件的 static 依賴項?

動態庫 (.so) 不能具有“靜態依賴項”,因為它們已經鏈接。

Object 文件 (.o) 和 static 庫 (.a) 定義了它們導出的符號(供他人使用)和它們自己使用的符號。

您可以使用nm命令列出 object 文件的符號。 例如:

$ nm lukas.o
                 U __cxa_atexit
                 U __dso_handle
0000000000000000 V DW.ref.__gxx_personality_v0
                 U _GLOBAL_OFFSET_TABLE_
00000000000003a8 t _GLOBAL__sub_I__Z15double_from_strRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
                 U __gxx_personality_v0
00000000000001d5 T main
                 U __stack_chk_fail
                 U _Unwind_Resume

U關鍵字標記了未定義的符號,即object文件的static依賴關系

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM