如何查看 Linux 共享库导出的函数列表?
我想查看 Linux 上共享库的导出函数。
什么命令允许我执行此操作?
(在Windows上我使用的程序取决于)
I want to view the exported functions of a shared library on Linux.
What command allows me to do this?
(On Windows I use the program depends)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您需要的是
nm
及其-D
选项:导出的 sumbols 由
T
指示。必须从其他共享对象加载的必需符号具有U
。请注意,符号表不仅包含函数,还包含导出的变量。有关详细信息,请参阅
nm
手册页。What you need is
nm
and its-D
option:Exported sumbols are indicated by a
T
. Required symbols that must be loaded from other shared objects have aU
. Note that the symbol table does not include just functions, but exported variables as well.See the
nm
manual page for more information.objdump -T *.so
也可以完成这项工作objdump -T *.so
may also do the job在其他已经提到的工具中,您还可以使用
readelf
(手册)。它与 objdump 类似,但更详细。请参阅此了解差异说明。Among other already mentioned tools you can use also
readelf
(manual). It is similar toobjdump
but goes more into detail. See this for the difference explanation.在 MAC 上,您需要使用 nm *.o | c++filt,因为
nm
中没有-C
选项。On a MAC, you need to use
nm *.o | c++filt
, as there is no-C
option innm
.以防万一某些 Mac 用户正在查看此处,请使用 llvm-cxxdump 或 llvm-readelf -sW
Just in case some Mac user is looking here, use llvm-cxxdump or llvm-readelf -sW