![](/img/trans.png)
[英]C++ libraries on mac not compiling with g++ my_program.cpp -o my_program
[英]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.