当前位置:  开发笔记 > 编程语言 > 正文

您如何列出已编译库中包含的可用功能等?

如何解决《您如何列出已编译库中包含的可用功能等?》经验,为你挑选了4个好方法。

如何确定库中是否存在函数,还是列出已编译库中的函数?



1> codelogic..:

您可以使用nm命令列出静态库中的符号.

nm -g -C 


-g-仅显示外部符号,-C-删除符号名称。

2> Johannes Sch..:

对于ELF二进制文件,您可以使用readelf:

readelf -sW a.out | awk '$4 == "FUNC"' | c++filt

-s:列表符号 -W:不要剪太长的名字

awk命令将过滤掉所有函数,c ++ filt将取消它们.这意味着它将从内部命名方案转换它们,以便以人类可读的形式显示它们.它输出与此类似的名称(取自boost.filesystem lib):

285: 0000bef0    91 FUNC    WEAK   DEFAULT   11 boost::exception::~exception()

如果没有c ++ filt,名称将显示为 _ZN5boost9exceptionD0Ev



3> Michael Burr..:

对于Microsoft工具," link /dump /symbols "将为您提供血腥的详细信息.可能还有其他方式(或选项)可以提供更易于阅读的列表.



4> Luca Tettama..:

在Linux/Unix下,您可以使用objdump -T列出给定对象中包含的导出符号.在Windows下有dumpbin(IIRC dumpbin /exports).请注意,C++函数名称被修改以允许重载.

编辑:在看到codelogic的anwser后,我记得objdump也理解-C来执行去整理.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有