Dynamic-Linking

獲取共享庫中的函式列表?

  • September 30, 2010

如何獲取共享對像庫中定義的函式列表,或找出某個特定函式是否定義在一個庫中?

*nix 系統上有不同的執行檔格式。a.out 是幾年前的一種常見格式,今天它在附近所有主要係統上都是 ELF。

ELF 由描述每個文件數據部分的標題組成。

您要查找的部分是符號表,其中每個符號(函式、變數)都映射到其地址。

共享庫將其全域符號保存在名為 .dynsym 的部分中

您正在尋找的是本節中類型函式和全域綁定的符號。

readelf --syms ./libfoo.so將為您提供符號的輸出。

在 Solaris 和 FreeBSD 上也elfdump可以使用。

objdump還顯示有關您的目標文件的大量資訊,您可以使用-j開關指定一個部分。

引用自:https://unix.stackexchange.com/questions/2541