打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
GNU Binutils详解

GNU Binutils详解

版本:v1.0

Crifan Li

摘要

本文主要介绍了什么是GNU Binutils,以及Binutils都包含了哪些工具,每个工具的功能的解释,举例详解每个工具实际使用方法。

本文提供多种格式供:

HTML版本的在线地址为:

http://www.crifan.com/files/doc/docbook/binutils_intro/release/html/binutils_intro.html

有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:

http://www.crifan.com/bbs/categories/binutils_intro/

2013-08-29

修订历史
修订 1.02013-08-29crl
  1. 添加GNU Binutils的简介
  2. 把整体框架添加好了,待后续添加每个工具的详细功能和用法

版权 ? 2013 Crifan, http://crifan.com


前言

1. 本文目的

话说,很久之前,从接触Linux开始,陆陆续续的,知道一些新名词,新工具,比如objcopy,nm等等。

包括后来折腾嵌入式开发,多多少少尝试这些工具的实际的使用,但是一直不是很清楚这些东西的真正来历。

知道后来,才知道,原来这一系列的工具,就是所谓的Binutils,然后才有了此文:

整理出来,Binutils是啥,包含哪些工具,都是如何使用的。

即:本文目的在于,将GNU Binutils中的各种工具,的功能解释一下,并且用实际例子,说明如何使用,以及主要是用来干啥的。

以实现,看了此文后,了解了GNU Binutils中各种工具的实际使用,并且对于编译链接等方面的知识,更加深入的了解。

第 1 章 GNU Binutils介绍

相关旧帖:GNU binutils工具使用

相关旧帖:【整理】关于Toolchain,cross toolchain,cross compiler

1.1. 什么是GNU Binutils

GNU Binutils,即GNU Binary Utilities的简写,一般简称为Binutils。

GNU Binutils,中文可以翻译为GNU的二进制工具集。

参考官网GNU Binutils的解释,可以解释为:

GNU Binutils,是一组二进制工具的集合。

其中:

  • 一组

    一组的意思是,不止一个,很多个。

  • 二进制

    二进制的意思是,这些工具,都是专门针对于二进制的,去操作二进制的

    与二进制相对应的,至少有,文本,源代码

    换句话说,这些工具,不是用于去操作,编译文本的,不是用来编译源代码的,而是专门用于操作二进制的。

    而二进制的东西,此处主要指的是,源代码编译出来的目标(*.o)文件,(Linux下面的elf等)可执行文件等等。

  • 工具

    工具的意思是,这些东西,各有对对应的用途,可以用来干活,实现你所需要的目的,满足你的需求

    至于实现什么目的,满足什么需求,则是不同的工具,有其特定的用途,才有了后面要介绍的,针对每个工具,所去详细解释其用途和用法。

1.2. GNU Binutils都包含哪些工具

如上所述,Binutils,是一组工具的统称,其包含了很多工具。

Binutils主要包括了ld和as。

另外也包括了,相对次要的,但实际上也很常用的,其他工具,比如ar,nm,objcopy等等。

下面先简要的介绍一下,这些工具是什么,以及主要功能:

1.2.1. Binutils中包含的主要工具

  • ld

    链接器。

    将多个目标文件,链接成一个可执行文件(或目标库文件)。

  • as

    汇编器。

    将汇编源代码,编译为(目标)机器代码

1.2.2. Binutils中包含的其他次要工具

  • 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

而接下来的章节,就是详细的介绍每一个工具的详细功能和具体用法了。

第 2 章 Binutils之ld

第 3 章 Binutils之as

第 4 章 Binutils之addr2line

第 5 章 Binutils之ar

第 6 章 Binutils之c++filt

第 7 章 Binutils之dlltool

第 8 章 Binutils之gold

第 9 章 Binutils之gprof

第 10 章 Binutils之nlmconv

第 11 章 Binutils之nm

第 12 章 Binutils之objcopy

第 13 章 Binutils之objdump

第 14 章 Binutils之ranlib

第 15 章 Binutils之readelf

第 16 章 Binutils之size

第 17 章 Binutils之strings

第 18 章 Binutils之strip

第 19 章 Binutils之windmc

第 20 章 Binutils之winres

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用GNU工具开发基于ARM的嵌入式系统
GNU的编译器和调试工具
gnu二进制工具集
GNU toolchain
Linux下如何反汇编arm raw binary文件
GCC 各工具使用简介
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服