【发布时间】:2011-04-09 00:53:21
【问题描述】:
查看共享对象模块 (lib*.so) 内容的命令行是什么?
就像我们的使用方式:
ar -t lib*.a
用于档案(lib*.a),它显示库中的所有目标文件。
EDIT1
示例
ar -t lib*.a
给我一个展示:
asset.o
sldep.o
【问题讨论】:
标签: c linux shared-objects dll
查看共享对象模块 (lib*.so) 内容的命令行是什么?
就像我们的使用方式:
ar -t lib*.a
用于档案(lib*.a),它显示库中的所有目标文件。
EDIT1
示例
ar -t lib*.a
给我一个展示:
asset.o
sldep.o
【问题讨论】:
标签: c linux shared-objects dll
使用 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
...
【讨论】:
nm -D --defined-only的引用。 nm -D 将显示未定义的符号等,如果您想查看 lib 本身定义的内容,这只是噪音。
我认为nm -D 是您正在寻找的。p>
$ 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
...
【讨论】:
nm -D 命令列出了您共享库的动态符号,这似乎正是您想要的。
【讨论】: