2010-12-22 82 views
131

我想在Linux上查看共享庫的導出函數。如何查看Linux共享庫導出的函數列表?

什麼命令允許我這樣做?

(在Windows上我使用的程序依賴)

+0

類似的問題:[我如何找出所有符號從共享對象中導出?](http://stackoverflow.com/questions/1237575/how-do-i-find-out-what-all -symbols-從共享對象中導出) – 2013-01-31 22:14:01

回答

209

你需要的是nm及其-D選項:

$ nm -D /usr/lib/libopenal.so.1 
. 
. 
. 
00012ea0 T alcSetThreadContext 
000140f0 T alcSuspendContext 
     U atanf 
     U calloc 
. 
. 
. 

出口sumbols由T表示。必須從其他共享對象加載的必需符號有U。請注意,符號表不僅包含函數,還包含導出的變量。

查看nmmanual page瞭解更多信息。

+10

或者,如果您只想查看導出的符號,請添加「--defined-only」標誌。例如:「nm -D --defined-only /lib/libtest.so」 – 2013-05-20 18:10:30

+6

`--demangle`爲我工作。 – vmrob 2014-01-15 15:25:22

2

在Mac上,你需要使用nm *.o | c++filt,因爲在nm沒有-C選項。