命令行查看内容共享对象模块(lib * .so)

时间:2010-09-07 05:48:26

标签: c linux shared-objects dll

查看共享对象模块(lib * .so)内容的命令行是什么?

就像我们如何使用:

ar -t lib*.a

用于存档(lib * .a),它显示库中的所有目标文件。

EDIT1

实施例

ar -t lib*.a

给我一​​个展示:

asset.o

sldep.o

3 个答案:

答案 0 :(得分:48)

使用nm -D --defined-only libname.so从动态库中获取符号名称 --defined-only开关仅显示这些文件中定义的符号,而不显示对外部函数的引用。

另一种方法是使用objdump,并只捕获文本部分中的符号:

objdump -T /usr/lib/libjpeg.so | grep text
...
0001b5c0 g    DF .text  00000016  Base        jdiv_round_up
00003730 g    DF .text  00000417  Base        jpeg_set_colorspace
0000cda0 g    DF .text  000002de  Base        jpeg_consume_input
00002b30 g    DF .text  00000023  Base        jpeg_abort_compress
00003b50 g    DF .text  000000b6  Base        jpeg_default_colorspace
00002810 g    DF .text  00000067  Base        jpeg_suppress_tables
00004110 g    DF .text  00000130  Base        jpeg_add_quant_table
000100c0 g    DF .text  0000011f  Base        jpeg_save_markers
...

答案 1 :(得分:14)

我认为nm -D正是您所寻找的。

$ nm -D /usr/lib/libpng.so
...
00000000000058f0 T png_reset_zstream
000000000000d420 T png_save_int_32
000000000000d450 T png_save_uint_16
000000000000d3f0 T png_save_uint_32
0000000000007810 T png_set_IHDR
0000000000007500 T png_set_PLTE
000000000000ce20 T png_set_add_alpha
0000000000006670 T png_set_asm_flags
0000000000006970 T png_set_bKGD
000000000001a740 T png_set_background
...

答案 2 :(得分:4)

nm -D命令列出了共享库的动态符号,这似乎正是您想要的。