如何查看 Linux 共享库正在导出的函数列表?
- 2024-10-14 08:40:00
- admin 原创
- 74
问题描述:
我想查看 Linux 上共享库的导出函数。
什么命令允许我做到这一点?
(在 Windows 上我使用该程序取决于)
解决方案 1:
您需要的是nm
及其-D
选项:
$ nm -D /usr/lib/libopenal.so.1
.
.
.
00012ea0 T alcSetThreadContext
000140f0 T alcSuspendContext
U atanf
U calloc
.
.
.
导出的符号用 表示T
。必须从其他共享对象加载的必需符号用 表示U
。请注意,符号表不仅包含函数,还包含导出的变量。
请参阅nm
手册页以了解更多信息。
解决方案 2:
objdump -T *.so
也可以做
解决方案 3:
除了上述提到的工具之外,您还可以使用readelf
(manual)。它与 类似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)
解决方案 4:
在 MAC 上,您需要使用nm *.o | c++filt
,因为中没有-C
选项nm
。
解决方案 5:
以防万一有 Mac 用户看到这里,请使用 llvm-cxxdump 或 llvm-readelf -sW
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD