概述
  从事 Linux 开发的朋友们都不可避免地用到一些工具,比如 objcopy、nm、objdump、readelf 等等。其实这一系列的工具,就是所谓的 Binutils,当然 GNU 就表示它们都是可以自由地使用的 GNU 软件。 
   GNU Binutils,是 GNU Binary Utilities 的简写,一般简称为 Binutils。中文可以翻译为 GNU 的二进制工具集。显然,Binutils 是一组二进制工具的集合。也就是说,Binutils 不是指某一个工具,而是指一组工具,并且这些工具都是专门针对于二进制的。注意,这里千万不要理解错了,不是说这些 Binutils 工具只提供二进制文件,而是说这些工具的目的是用于操作二进制文件的,而不是针对于文本或者源代码。 
   再说一遍:Binutils 工具是专门用于操作二进制的,而不是用于去操作或者编译文本、源代码的。 
   在 Linux 环境下,这种二进制文件主要指 *.o 文件和 elf 执行文件。显然,编译源代码的是 gcc,所以 Binutils 不包含 gcc(这是一种简单的说法,实际上还是有很多关联的)。
Binutils 工具
  现在我们已经知道,Binutils 是一组工具集合,那到底包含了哪些工具呢? 
   Binutils 中比较重要的是 ld 和 as。
- ld —— 链接器
 将多个目标文件,链接成一个可执行文件(或目标库文件)。
- as —— 汇编器
 将汇编源代码,编译为(目标)机器代码。
另外还有下面这些相对次要的,但非常实用的工具:
- addr2line
 将地址转换为(文件名和)行号的工具,一般主要用于反汇编。
- ar
 用来操作(.a)档案文件,比如创建,修改,提取内容等
- c++filt
 Filter to demangle encoded C++ symbols
- dlltool
 Creates files for building and using DLLs
- gold
 一个新的,速度更快的,只针对于ELF的链接器(可能还不是很成熟稳定)。
- 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
官网:http://www.gnu.org/software/binutils/










