Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查看Linux共享库正在导出的函数列表?_Linux_Export_Shared Libraries - Fatal编程技术网

如何查看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。请注意,符号表不仅包

我想查看Linux上共享库的导出函数

什么命令允许我这样做


(在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
这将把输出写入文件。