如何查看Linux共享库正在导出的函数列表?
我想查看Linux上共享库的导出函数 什么命令允许我这样做如何查看Linux共享库正在导出的函数列表?,linux,export,shared-libraries,Linux,Export,Shared Libraries,我想查看Linux上共享库的导出函数 什么命令允许我这样做 (在Windows上,我使用的程序取决于)您需要的是nm及其-D选项: $ nm -D /usr/lib/libopenal.so.1 . . . 00012ea0 T alcSetThreadContext 000140f0 T alcSuspendContext U atanf U calloc . . . 导出的SUMBOL由T表示。必须从其他共享对象加载的必需符号具有U。请注意,符号表不仅包
(在Windows上,我使用的程序取决于)您需要的是
nm
及其-D
选项:
$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
.
.
.
导出的SUMBOL由T
表示。必须从其他共享对象加载的必需符号具有U
。请注意,符号表不仅包括函数,还包括导出的变量
有关更多信息,请参见
nm
。objdump-T*。因此
也可以在MAC上执行此任务,您需要使用nm*.o | c++filt
,因为在nm
中没有-c
选项,您还可以使用readelf
()。它类似于objdump
,但更详细。有关差异的解释,请参见
$ readelf -sW /lib/liblzma.so.5 |head -n10
Symbol table '.dynsym' contains 128 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FUNC GLOBAL DEFAULT UND pthread_mutex_unlock@GLIBC_2.0 (4)
2: 00000000 0 FUNC GLOBAL DEFAULT UND pthread_mutex_destroy@GLIBC_2.0 (4)
3: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable
4: 00000000 0 FUNC GLOBAL DEFAULT UND memmove@GLIBC_2.0 (5)
5: 00000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.0 (5)
6: 00000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.0 (5)
如果某些Mac用户正在查看此处,请使用llvm cxxdump或llvm readelf-sW一个类似的问题:或者如果您只想查看导出的符号,请添加“-defined only”标志。例如:“NM- D -定义为/LIb/LbTest.SO”,在Mac OS X上,只使用<代码> NM>代码>,没有<代码> -d>代码>标志。添加<代码> -c>代码>来删除C++函数名。它给了我大量的输出。@JurajMartinka
readelf-sW*.so>out.txt
这将把输出写入文件。