一、GNU Binutils 介绍
GNU Binutils 是一组二进制工具集,即GNU Binary Utilities,是一套用于创建、管理和维护二进制目标文件的工具集合,包括addr2line、ar、gprof、nm、objcopy、objdump、ranlib、size、strings、strip。
注意,这里千万不要理解错了,不是说这些 Binutils 工具只提供二进制文件,而是说这些工具的目的是用于操作二进制文件的,而不是针对于文本或者源代码。
在 Linux 环境下,这种二进制文件主要指 *.o 文件和 elf 执行文件。显然,编译源代码的是 gcc,所以 Binutils 不包含 gcc(这是一种简单的说法,实际上还是有很多关联的)。
GNU Binutils 工具集快照
1.1 GNU Binutils 工具集
GNU Binutils 工具集主要有:
- ld - 链接器:将多个目标文件,链接成一个可执行文件(或目标库文件)
- as - 汇编器:将汇编源代码,编译为(目标)机器代码。
- gold - 一个新的,更快的,ELF专用链接器
它们还包括:
- addr2line 将地址转换为(文件名和)行号的工具,一般主要用于反汇编。
- ar 用来操作(.a)档案文件,比如创建,修改,提取内容等
- c++filt Filter to demangle encoded C++ symbols
- dlltool Creates files for building and using DLLs
- gprof Displays profiling information
- nlmconv Converts object code into an NLM
- nm 列出目标文件中的符号
- objcopy 拷贝并翻译(转换)文件,可用于不同格式的二进制文件的转换。
- objdump 显示目标文件中的信息。
- ranlib Generates an index to the contents of an archive
- readelf 显示 ELF 格式的(目标)文件的信息。
- size 显示目标文件或(.a)档案文件中的节(section)的大小。
- strings 显示文件中的(可打印)的字符串信息。
- strip 去除符号。一般用来把可执行文件中的一些信息(比如 debug 信息)去除掉,以实现在不影响程序功能的前提下,减少可执行文件的大小,减少程序的空间占用。
- windmc A Windows compatible message compiler
- windres A compiler for Windows resource files