如何查看linux动态库中包含哪些函数

如何查看linux动态库中包含哪些函数,第1张

nm可列出.o .a .so中的符号信息,包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。

举个栗子:

nm -D libname.so

nm [option(s)] [file(s)]

有用的options:

-A 在每个符号信息的前面打印所在对象文件名称;

-C 输出demangle过了的符号名称;

-D 打印动态符号;

-l 使用对象文件中的调试信息打印出所在源文件及行号;

-n 按照地址/符号值来排序;

-u 打印出那些未定义的符号;

创建静态库:

ar -rcs test.a *.o

查看静态库:

ar -tv test.a

解压静态库:

ar -x test.a

查看程序依赖的动态库:

readelf -a xxx|grep library

如:可以看到,下面的交叉程序hello执行依赖于如下两个动态库。

rebi@ubuntu:~/test$ arm-none-linux-gnueabi-readelf -a hello|grep "library"

0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]

0x00000001 (NEEDED) Shared library: [libc.so.6]

rebi@ubuntu:~/test$

或者:readelf -l hello 即可。

nm xxx 查看符号

其中,T表示代码段,U表示在其它地方定义,所以需要确保必须在某个.o或库里被定义过。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8488639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存