欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > linux中三个常用查询符号表的命令

linux中三个常用查询符号表的命令

2025/2/24 4:03:56 来源:https://blog.csdn.net/zhanghui962623727/article/details/143503592  浏览:    关键词:linux中三个常用查询符号表的命令

linux中有三个常用的查询符号表的命令,分别是nm、objdump和readelf。

1、nm命令

这个是最常用的命令,可以用于查询二进制文件中的符号表,包括目标文件(.o)、静态库(.a、.lib)和动态库(.so)等;

nm xxx.o

该命令可以用来处理多种文件格式,如ELF、COFF、目标文件、静态库、动态库等;

该命令在列出符号时,会显示符号类型:

  • T:全局文本符号(函数)
  • D:全局数据符号
  • B:未初始化的全局数据符号
  • U:未定义符号

nm还有一些常用的选项,使用的时候可以使用nm --help命令查询,大致如下:

Usage: nm [option(s)] [file(s)]List symbols in [file(s)] (a.out by default).The options are:-a, --debug-syms       Display debugger-only symbols-A, --print-file-name  Print name of the input file before every symbol-B                     Same as --format=bsd-C, --demangle[=STYLE] Decode low-level symbol names into user-level namesThe STYLE, if specified, can be `auto' (the default),`gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'or `gnat'--no-demangle      Do not demangle low-level symbol names--recurse-limit    Enable a demangling recursion limit.  This is the default.--no-recurse-limit Disable a demangling recursion limit.-D, --dynamic          Display dynamic symbols instead of normal symbols--defined-only     Display only defined symbols-e                     (ignored)-f, --format=FORMAT    Use the output format FORMAT.  FORMAT can be `bsd',`sysv' or `posix'.  The default is `bsd'-g, --extern-only      Display only external symbols-l, --line-numbers     Use debugging information to find a filename andline number for each symbol-n, --numeric-sort     Sort symbols numerically by address-o                     Same as -A-p, --no-sort          Do not sort the symbols-P, --portability      Same as --format=posix-r, --reverse-sort     Reverse the sense of the sort--plugin NAME      Load the specified plugin-S, --print-size       Print size of defined symbols-s, --print-armap      Include index for symbols from archive members--size-sort        Sort symbols by size--special-syms     Include special symbols in the output--synthetic        Display synthetic symbols as well-t, --radix=RADIX      Use RADIX for printing symbol values--target=BFDNAME   Specify the target object format as BFDNAME-u, --undefined-only   Display only undefined symbols--with-symbol-versions  Display version strings after symbol names-X 32_64               (ignored)@FILE                  Read options from FILE-h, --help             Display this information-V, --version          Display this program's version number

2、objdump命令

该命令的主要功能:

(1)显示文件头信息:可以查看可执行文件或目标文件的头部信息,包括格式、架构等;

(2)反汇编:将机器代码转为汇编语言

objdump -d <filename>

(3)显示符号表

objdump -t xxx.o

(4)显示节信息

可以查看文件中各个节(section)及大小、地址等;

objdump -h <filename>

(5)显示重定位信息,便于理解如何链接和加载程序。

objdump -R <filename>

(6)显示调试信息,如果文件包含调试信息,可以使用如下命令查看。

objdump -g <filename>

该命令除了可以查看符号表外,还有一些其他操作,使用时可以借助objdump --help查看。

Usage: objdump <option(s)> <file(s)>Display information from object <file(s)>.At least one of the following switches must be given:-a, --archive-headers    Display archive header information-f, --file-headers       Display the contents of the overall file header-p, --private-headers    Display object format specific file header contents-P, --private=OPT,OPT... Display object format specific contents-h, --[section-]headers  Display the contents of the section headers-x, --all-headers        Display the contents of all headers-d, --disassemble        Display assembler contents of executable sections-D, --disassemble-all    Display assembler contents of all sections-S, --source             Intermix source code with disassembly-s, --full-contents      Display the full contents of all sections requested-g, --debugging          Display debug information in object file-e, --debugging-tags     Display debug information using ctags style-G, --stabs              Display (in raw form) any STABS info in the file-W[lLiaprmfFsoRtUuTgAckK] or--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,=addr,=cu_index,=links,=follow-links]Display DWARF info in the file-t, --syms               Display the contents of the symbol table(s)-T, --dynamic-syms       Display the contents of the dynamic symbol table-r, --reloc              Display the relocation entries in the file-R, --dynamic-reloc      Display the dynamic relocation entries in the file
...省略其他

3、readelf命令

这个命令用于显示符号表(ELF)格式文件的信息,同样可以使用-s选项查看符号表,示例:

readelf -s xxx.o

同样实际使用过程中可以借助readelf --help命令查询支持的一起其他选项。

注意,该命令只能用于查看和分析ELF(Executable and Linkable Format)格式文件的工具。

Usage: readelf <option(s)> elf-file(s)Display information about the contents of ELF format filesOptions are:-a --all               Equivalent to: -h -l -S -s -r -d -V -A -I-h --file-header       Display the ELF file header-l --program-headers   Display the program headers--segments          An alias for --program-headers-S --section-headers   Display the sections' header--sections          An alias for --section-headers-g --section-groups    Display the section groups-t --section-details   Display the section details-e --headers           Equivalent to: -h -l -S-s --syms              Display the symbol table--symbols           An alias for --syms--dyn-syms             Display the dynamic symbol table-n --notes             Display the core notes (if present)-r --relocs            Display the relocations (if present)-u --unwind            Display the unwind info (if present)-d --dynamic           Display the dynamic section (if present)-V --version-info      Display the version sections (if present)-A --arch-specific     Display architecture specific information (if any)-c --archive-index     Display the symbol/file index in an archive-D --use-dynamic       Use the dynamic section info when displaying symbols-x --hex-dump=<number|name>Dump the contents of section <number|name> as bytes-p --string-dump=<number|name>Dump the contents of section <number|name> as strings-R --relocated-dump=<number|name>Dump the contents of section <number|name> as relocated bytes-z --decompress        Decompress section before dumping it
...省略其他

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词