如何显示 *.so 文件的符号列表

nm libxyz.so | grep abc

objdump -t libxyz.so | grep abc


nm: list symbols: object files, archive library and shared library

The command "nm" lists symbols contained in object files:

nm file.o

The command "nm" lists symbols contained in the archive library:

Object symbols in static archive libraries are categorized using the source and object file hierachy of the library:
nm /usr/lib/x86_64-linux-gnu/libjpeg.a
jlibinit.o:
0000000000000000 B auxv
                 U fclose
                 U fopen
                 U fread
                 U getpagesize
0000000000000000 T libjpeg_general_init
                 U malloc
                 U perror

jcapimin.o:
                 U jinit_marker_writer
                 U jinit_memory_mgr
0000000000000000 T jpeg_CreateCompress
                 U jpeg_abort
0000000000000240 T jpeg_abort_compress
                 U jpeg_destroy
0000000000000230 T jpeg_destroy_compress
00000000000002a0 T jpeg_finish_compress
                 U jpeg_natural_order
...
...
      

The command "nm" lists symbols contained in the object file or shared library.

Use the command nm -D libctest.so.1.0
(or nm --dynamic libctest.so.1.0)

0000000000100988 A __bss_start
000000000000068c T ctest1
00000000000006a0 T ctest2
                 w __cxa_finalize
00000000001007b0 A _DYNAMIC
0000000000100988 A _edata
0000000000100990 A _end
00000000000006f8 T _fini
0000000000100958 A _GLOBAL_OFFSET_TABLE_
                 w __gmon_start__
00000000000005b0 T _init
                 w _Jv_RegisterClasses
      
Also see: Man page for nm
Symbol TypeDescription
AThe symbol's value is absolute, and will not be changed by further linking.
BUn-initialized data section
DInitialized data section
TNormal code section
UUndefined symbol used but not defined. Dependency on another library.
WDoubly defined symbol. If found, allow definition in another library to resolve dependency.

Also see: objdump man page

参考资料:

http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 解析.so是一个类似于depends工具的工具,用于解析和分析在Linux系统中使用的动态链接库文件(.so文件)的依赖关系。 在Linux系统中,动态链接库文件是由程序在运行时需要的共享库文件,用于提供程序所需的功能和资源支持。解析.so工具可以将.so文件作为输入,分析其中的符号引用和依赖关系。 首先,解析.so工具可以识别.so文件中的符号引用,这些符号引用是程序运行时需要调用的函数或变量。工具可以将这些符号引用与系统库或其他共享库中的符号关联起来,以确保程序可以正确地调用所需的函数和变量。 其次,解析.so工具还可以分析.so文件的依赖关系。动态链接库文件往往会依赖于其他的库文件,这些文件提供了.so文件所需要的函数和资源。解析.so工具可以检测并列出这些依赖关系,以帮助开发人员了解和管理程序所需的库文件。 通过解析.so工具,开发人员可以更好地理解程序所需的动态链接库文件的相关信息。他们可以识别程序中使用的库文件和函数,了解库文件之间的依赖关系,并及时处理可能出现的依赖问题。这有助于确保程序能够正确地加载和运行,并提供所需的功能支持。 因此,解析.so是一个类似于depends工具的工具,它可以帮助开发人员分析和管理程序运行时的动态链接库文件符号引用和依赖关系,从而提高程序的稳定性和可靠性。 ### 回答2: 解析.so是一个类似于depends工具的工具。它可以用来分析和查看一个.so文件的依赖关系。 在计算机编程中,动态链接库(Dynamic Link Library,简称DLL)是一种可以在运行时被程序动态加载和链接的文件。而.so文件则是在类Unix系统(比如Linux)中使用的共享对象文件格式,也是一种动态链接库。 解析.so工具可以将一个.so文件打开,并显示出该文件中的所有依赖项。这些依赖项通常是其他.so文件或系统库文件,它们被称为该.so文件的依赖关系。 类似于depends工具,解析.so可以帮助开发人员和系统管理员了解一个程序运行所需的各种依赖项,以便在部署和运维过程中更好地管理和维护软件。同时,解析.so还可以帮助开发人员排除一些依赖问题,比如找到缺少的依赖项或者解决依赖冲突等。 总的来说,解析.so是一个方便的工具,可以帮助开发人员和系统管理员更好地理解和管理.so文件的依赖关系。它在软件开发、部署和维护过程中都有很大的作用,提供更好的可靠性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值