1. 程式人生 > >使用objdump檢視動態庫和靜態庫中具有哪些函式

使用objdump檢視動態庫和靜態庫中具有哪些函式



我們在 Linux 下執行一個程式,有時會無法啟動,報缺少某某庫。這時需要檢視可執行程式或者動態庫中的符號表,動態庫的依賴項, Linux 有現成的工具可用:objdump 。

objdump 是 gcc 套件中用來檢視 ELF 檔案的工具,具體詳細用法不進行介紹,此處只講解如何進行一個動態庫和靜態庫中匯出函式的檢視。

1). 檢視依賴項:objdump -x xxx.so | grep "NEEDED" 。下面是我檢視 libsf_modbus_preproce.so 時的輸出截圖:

2). 檢視動態符號表: objdump -T xxx.so 。假如想知道 xxx.so 中是否匯出了符號 yyy ,那麼命令為 objdump -T xxx.so | grep "yyy" 。下面是我檢視 libsf_modbus_preproce.so 時的輸出截圖:

3). 檢視符號表: objdump -t xxx.so 。-T 和 -t 選項在於 -T 只能檢視動態符號,如庫匯出的函式和引用其他庫的函式,而 -t 可以檢視所有的符號,包括資料段的符號。下面是我檢視 libsf_modbus_preproce.so 時的輸出截圖: