你知道 GNU Binutils 吗?

来源:互联网 发布:淘宝c店变成企业店铺 编辑:程序博客网 时间:2024/06/05 16:18

概述

  从事 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/

文档下载:http://download.csdn.net/download/luckydarcy/10016030