SlideShare a Scribd company logo
GNU Binutils详解
版本:v1.0
Crifan Li
摘要
本文主要介绍了什么是GNU Binutils,以及Binutils都包含了哪些工具,每个工具的功能的解释,举例详解每个工
具实际使用方法。

本文提供多种格式供:
在线阅读

HTML

1

下载(7zip压缩包)

HTML

8

HTMLs

PDF

3

HTMLs

PDF

10

2

9

CHM

4

CHM

11

TXT

5

TXT

12

RTF

6

RTF

13

WEBHELP
7

WEBHELP
14

HTML版本的在线地址为:
http://www.crifan.com/files/doc/docbook/binutils_intro/release/html/binutils_intro.html
有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:
http://www.crifan.com/bbs/categories/binutils_intro/

修订历史
修订 1.0

2013-08-29

crl

1. 添加GNU Binutils的简介
2. 把整体框架添加好了,待后续添加每个工具的详细功能和用法

1

http://www.crifan.com/files/doc/docbook/binutils_intro/release/html/binutils_intro.html
http://www.crifan.com/files/doc/docbook/binutils_intro/release/htmls/index.html
3
http://www.crifan.com/files/doc/docbook/binutils_intro/release/pdf/binutils_intro.pdf
4
http://www.crifan.com/files/doc/docbook/binutils_intro/release/chm/binutils_intro.chm
5
http://www.crifan.com/files/doc/docbook/binutils_intro/release/txt/binutils_intro.txt
6
http://www.crifan.com/files/doc/docbook/binutils_intro/release/rtf/binutils_intro.rtf
7
http://www.crifan.com/files/doc/docbook/binutils_intro/release/webhelp/index.html
8
http://www.crifan.com/files/doc/docbook/binutils_intro/release/html/binutils_intro.html.7z
9
http://www.crifan.com/files/doc/docbook/binutils_intro/release/htmls/index.html.7z
10
http://www.crifan.com/files/doc/docbook/binutils_intro/release/pdf/binutils_intro.pdf.7z
11
http://www.crifan.com/files/doc/docbook/binutils_intro/release/chm/binutils_intro.chm.7z
12
http://www.crifan.com/files/doc/docbook/binutils_intro/release/txt/binutils_intro.txt.7z
13
http://www.crifan.com/files/doc/docbook/binutils_intro/release/rtf/binutils_intro.rtf.7z
14
http://www.crifan.com/files/doc/docbook/binutils_intro/release/webhelp/binutils_intro.webhelp.7z
2
GNU Binutils详解:
Crifan Li

版本:v1.0
出版日期 2013-08-29
版权 © 2013 Crifan, http://crifan.com
15

本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)

15

http://www.crifan.com/files/doc/docbook/soft_dev_basic/release/html/soft_dev_basic.html#cc_by_nc
目录
前言 ........................................................................................................................................ iv
1. 本文目的 ...................................................................................................................... iv
1. GNU Binutils介绍 ................................................................................................................ 1
1.1. 什么是GNU Binutils .................................................................................................. 1
1.2. GNU Binutils都包含哪些工具 ..................................................................................... 1
1.2.1. Binutils中包含的主要工具 ................................................................................ 1
1.2.2. Binutils中包含的其他次要工具 .......................................................................... 2
2. Binutils之ld .......................................................................................................................... 4
3. Binutils之as ......................................................................................................................... 5
4. Binutils之addr2line .............................................................................................................. 6
5. Binutils之ar .......................................................................................................................... 7
6. Binutils之c++filt .................................................................................................................. 8
7. Binutils之dlltool ................................................................................................................... 9
8. Binutils之gold .................................................................................................................... 10
9. Binutils之gprof .................................................................................................................. 11
10. Binutils之nlmconv ........................................................................................................... 12
11. Binutils之nm .................................................................................................................... 13
12. Binutils之objcopy ............................................................................................................ 14
13. Binutils之objdump .......................................................................................................... 15
14. Binutils之ranlib ................................................................................................................ 16
15. Binutils之readelf .............................................................................................................. 17
16. Binutils之size ................................................................................................................... 18
17. Binutils之strings .............................................................................................................. 19
18. Binutils之strip .................................................................................................................. 20
19. Binutils之windmc ............................................................................................................ 21
20. Binutils之winres ............................................................................................................... 22
参考书目 ................................................................................................................................ 23

iii
前言
1. 本文目的
话说,很久之前,从接触Linux开始,陆陆续续的,知道一些新名词,新工具,比如objcopy,nm等
等。
包括后来折腾嵌入式开发,多多少少尝试这些工具的实际的使用,但是一直不是很清楚这些东西的真正
来历。
知道后来,才知道,原来这一系列的工具,就是所谓的Binutils,然后才有了此文:
整理出来,Binutils是啥,包含哪些工具,都是如何使用的。
即:本文目的在于,将GNU Binutils中的各种工具,的功能解释一下,并且用实际例子,说明如何使
用,以及主要是用来干啥的。
以实现,看了此文后,了解了GNU Binutils中各种工具的实际使用,并且对于编译链接等方面的知识,
更加深入的了解。

iv
第 1 章 GNU Binutils介绍
1

相关旧帖:GNU binutils工具使用

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

2

1.1. 什么是GNU Binutils
GNU Binutils,即GNU Binary Utilities的简写,一般简称为Binutils。
GNU Binutils,中文可以翻译为GNU的二进制工具集。
3

参考官网GNU Binutils 的解释,可以解释为:
GNU Binutils,是一组二进制工具的集合。
其中:
• 一组
一组的意思是,不止一个,很多个。
• 二进制
二进制的意思是,这些工具,都是专门针对于二进制的,去操作二进制的
与二进制相对应的,至少有,文本,源代码
换句话说,这些工具,不是用于去操作,编译文本的,不是用来编译源代码的,而是专门用于操作二
进制的。
而二进制的东西,此处主要指的是,源代码编译出来的目标(*.o)文件,(Linux下面的elf等)可执行文
件等等。
• 工具
工具的意思是,这些东西,各有对对应的用途,可以用来干活,实现你所需要的目的,满足你的需求
至于实现什么目的,满足什么需求,则是不同的工具,有其特定的用途,才有了后面要介绍的,针对
每个工具,所去详细解释其用途和用法。

1.2. GNU Binutils都包含哪些工具
如上所述,Binutils,是一组工具的统称,其包含了很多工具。
Binutils主要包括了ld和as。
另外也包括了,相对次要的,但实际上也很常用的,其他工具,比如ar,nm,objcopy等等。
下面先简要的介绍一下,这些工具是什么,以及主要功能:

1.2.1. Binutils中包含的主要工具
• ld
链接器。
1
2
3

http://www.crifan.com/gnu_binutils_tools/
http://www.crifan.com/summary_about_toolchain_cross_compiler/
http://www.gnu.org/software/binutils/

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

• 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

2
GNU Binutils介绍
拷贝并翻译(转换)文件
可用于不同格式的二进制文件的转换

• 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

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

3
第 2 章 Binutils之ld

4
第 3 章 Binutils之as

5
第 4 章 Binutils之addr2line

6
第 5 章 Binutils之ar

7
第 6 章 Binutils之c++filt

8
第 7 章 Binutils之dlltool

9
第 8 章 Binutils之gold

10
第 9 章 Binutils之gprof

11
第 10 章 Binutils之nlmconv

12
第 11 章 Binutils之nm

13
第 12 章 Binutils之objcopy

14
第 13 章 Binutils之objdump

15
第 14 章 Binutils之ranlib

16
第 15 章 Binutils之readelf

17
第 16 章 Binutils之size

18
第 17 章 Binutils之strings

19
第 18 章 Binutils之strip

20
第 19 章 Binutils之windmc

21
第 20 章 Binutils之winres

22
参考书目
[1] crifan的的库函数:crifanLib
[2] crifan的C#库:crifanLib.cs

1
2

1

2

http://www.crifan.com/crifan_released_all/crifanlib/
http://code.google.com/p/crifanlib/source/browse/trunk/csharp/crifanLib.cs

23

More Related Content

Viewers also liked

Ppt Chapter 8
Ppt Chapter 8Ppt Chapter 8
Ppt Chapter 8
kpatric
 
6ºB Octavio e Karen
6ºB  Octavio e Karen6ºB  Octavio e Karen
6ºB Octavio e Karen
Edson-Luis-de-Lima-Souto
 
Eidikos efarmogwn aisitikis 1
Eidikos efarmogwn aisitikis 1Eidikos efarmogwn aisitikis 1
Eidikos efarmogwn aisitikis 1
Panos Kalampalikis
 
Cbmerj gabarito definitivo funcefet
Cbmerj gabarito definitivo funcefetCbmerj gabarito definitivo funcefet
Cbmerj gabarito definitivo funcefet
Rafael Vieira
 
Prática de planejamento sus municipio
Prática de planejamento sus municipioPrática de planejamento sus municipio
Prática de planejamento sus municipio
Rafael Vieira
 
Artículo científico metodología piramidal universitaria
Artículo científico metodología piramidal universitariaArtículo científico metodología piramidal universitaria
Artículo científico metodología piramidal universitaria
Jenner Baquero
 
Para memorizar os ramos do direito onde a competência para legislar é privati...
Para memorizar os ramos do direito onde a competência para legislar é privati...Para memorizar os ramos do direito onde a competência para legislar é privati...
Para memorizar os ramos do direito onde a competência para legislar é privati...
Elizabeth Lindner
 
El Mecenazgo Cultural, Herramienta de Comunicación y Colaboración
El Mecenazgo Cultural, Herramienta de Comunicación y ColaboraciónEl Mecenazgo Cultural, Herramienta de Comunicación y Colaboración
El Mecenazgo Cultural, Herramienta de Comunicación y Colaboración
josepalcaina
 
Manual de identidade da marca plátano da serra
Manual de identidade da marca plátano da serraManual de identidade da marca plátano da serra
Manual de identidade da marca plátano da serra
empehcom
 
Amigo de verdad
Amigo de verdadAmigo de verdad
Amigo de verdad
MJSUruguay
 
Насколько инфантильны Ваши сотрудники.
Насколько инфантильны Ваши сотрудники.Насколько инфантильны Ваши сотрудники.
Насколько инфантильны Ваши сотрудники.
Alex Huin
 
Regular expression
Regular expressionRegular expression
Regular expressioncri fan
 
Origem do universo e da vida (2ª parte da actividade)
Origem do universo e da vida (2ª parte da actividade)Origem do universo e da vida (2ª parte da actividade)
Origem do universo e da vida (2ª parte da actividade)
Carolina Viegas
 
6 meses slide
6 meses slide6 meses slide
презентация глоботестус на конкурс стартапов
презентация глоботестус на конкурс стартаповпрезентация глоботестус на конкурс стартапов
презентация глоботестус на конкурс стартапов
AlexalaPerla
 
WorkCenters: Meeting User Demand for Simple, Intuitive Business Applications-...
WorkCenters: Meeting User Demand for Simple, Intuitive Business Applications-...WorkCenters: Meeting User Demand for Simple, Intuitive Business Applications-...
WorkCenters: Meeting User Demand for Simple, Intuitive Business Applications-...
Emtec Inc.
 
Maxiemendamento ddl Lavoro
Maxiemendamento ddl LavoroMaxiemendamento ddl Lavoro
Maxiemendamento ddl Lavoro
Fabio Bolo
 

Viewers also liked (17)

Ppt Chapter 8
Ppt Chapter 8Ppt Chapter 8
Ppt Chapter 8
 
6ºB Octavio e Karen
6ºB  Octavio e Karen6ºB  Octavio e Karen
6ºB Octavio e Karen
 
Eidikos efarmogwn aisitikis 1
Eidikos efarmogwn aisitikis 1Eidikos efarmogwn aisitikis 1
Eidikos efarmogwn aisitikis 1
 
Cbmerj gabarito definitivo funcefet
Cbmerj gabarito definitivo funcefetCbmerj gabarito definitivo funcefet
Cbmerj gabarito definitivo funcefet
 
Prática de planejamento sus municipio
Prática de planejamento sus municipioPrática de planejamento sus municipio
Prática de planejamento sus municipio
 
Artículo científico metodología piramidal universitaria
Artículo científico metodología piramidal universitariaArtículo científico metodología piramidal universitaria
Artículo científico metodología piramidal universitaria
 
Para memorizar os ramos do direito onde a competência para legislar é privati...
Para memorizar os ramos do direito onde a competência para legislar é privati...Para memorizar os ramos do direito onde a competência para legislar é privati...
Para memorizar os ramos do direito onde a competência para legislar é privati...
 
El Mecenazgo Cultural, Herramienta de Comunicación y Colaboración
El Mecenazgo Cultural, Herramienta de Comunicación y ColaboraciónEl Mecenazgo Cultural, Herramienta de Comunicación y Colaboración
El Mecenazgo Cultural, Herramienta de Comunicación y Colaboración
 
Manual de identidade da marca plátano da serra
Manual de identidade da marca plátano da serraManual de identidade da marca plátano da serra
Manual de identidade da marca plátano da serra
 
Amigo de verdad
Amigo de verdadAmigo de verdad
Amigo de verdad
 
Насколько инфантильны Ваши сотрудники.
Насколько инфантильны Ваши сотрудники.Насколько инфантильны Ваши сотрудники.
Насколько инфантильны Ваши сотрудники.
 
Regular expression
Regular expressionRegular expression
Regular expression
 
Origem do universo e da vida (2ª parte da actividade)
Origem do universo e da vida (2ª parte da actividade)Origem do universo e da vida (2ª parte da actividade)
Origem do universo e da vida (2ª parte da actividade)
 
6 meses slide
6 meses slide6 meses slide
6 meses slide
 
презентация глоботестус на конкурс стартапов
презентация глоботестус на конкурс стартаповпрезентация глоботестус на конкурс стартапов
презентация глоботестус на конкурс стартапов
 
WorkCenters: Meeting User Demand for Simple, Intuitive Business Applications-...
WorkCenters: Meeting User Demand for Simple, Intuitive Business Applications-...WorkCenters: Meeting User Demand for Simple, Intuitive Business Applications-...
WorkCenters: Meeting User Demand for Simple, Intuitive Business Applications-...
 
Maxiemendamento ddl Lavoro
Maxiemendamento ddl LavoroMaxiemendamento ddl Lavoro
Maxiemendamento ddl Lavoro
 

Similar to Binutils intro

Virutal machine tutorial
Virutal machine tutorialVirutal machine tutorial
Virutal machine tutorialcri fan
 
Python summary
Python summaryPython summary
Python summarycri fan
 
Buy house
Buy houseBuy house
Buy housecri fan
 
Buy house
Buy houseBuy house
Buy housecri fan
 
Cygwin intro
Cygwin introCygwin intro
Cygwin introcri fan
 
Cygwin intro
Cygwin introCygwin intro
Cygwin introcri fan
 
Programming language basic
Programming language basicProgramming language basic
Programming language basiccri fan
 
Build website
Build websiteBuild website
Build websitecri fan
 
Build website
Build websiteBuild website
Build websitecri fan
 
Python topic re
Python topic rePython topic re
Python topic recri fan
 
Soft dev basic
Soft dev basicSoft dev basic
Soft dev basiccri fan
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
National Cheng Kung University
 
自由/開源授權的ABC
自由/開源授權的ABC自由/開源授權的ABC
自由/開源授權的ABC
Florence T.M. Ko
 
Firmware download
Firmware downloadFirmware download
Firmware downloadcri fan
 
Language summary
Language summaryLanguage summary
Language summarycri fan
 
Ubuntu & Ubuntu Kylin 14.04
Ubuntu & Ubuntu Kylin 14.04Ubuntu & Ubuntu Kylin 14.04
Ubuntu & Ubuntu Kylin 14.04
Anthony Wong
 
Symbology gs1128
Symbology gs1128Symbology gs1128
Symbology gs1128cri fan
 
Arm vs mips
Arm vs mipsArm vs mips
Arm vs mipscri fan
 
Arm vs mips
Arm vs mipsArm vs mips
Arm vs mipscri fan
 
Fieldbus intro
Fieldbus introFieldbus intro
Fieldbus introcri fan
 

Similar to Binutils intro (20)

Virutal machine tutorial
Virutal machine tutorialVirutal machine tutorial
Virutal machine tutorial
 
Python summary
Python summaryPython summary
Python summary
 
Buy house
Buy houseBuy house
Buy house
 
Buy house
Buy houseBuy house
Buy house
 
Cygwin intro
Cygwin introCygwin intro
Cygwin intro
 
Cygwin intro
Cygwin introCygwin intro
Cygwin intro
 
Programming language basic
Programming language basicProgramming language basic
Programming language basic
 
Build website
Build websiteBuild website
Build website
 
Build website
Build websiteBuild website
Build website
 
Python topic re
Python topic rePython topic re
Python topic re
 
Soft dev basic
Soft dev basicSoft dev basic
Soft dev basic
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
自由/開源授權的ABC
自由/開源授權的ABC自由/開源授權的ABC
自由/開源授權的ABC
 
Firmware download
Firmware downloadFirmware download
Firmware download
 
Language summary
Language summaryLanguage summary
Language summary
 
Ubuntu & Ubuntu Kylin 14.04
Ubuntu & Ubuntu Kylin 14.04Ubuntu & Ubuntu Kylin 14.04
Ubuntu & Ubuntu Kylin 14.04
 
Symbology gs1128
Symbology gs1128Symbology gs1128
Symbology gs1128
 
Arm vs mips
Arm vs mipsArm vs mips
Arm vs mips
 
Arm vs mips
Arm vs mipsArm vs mips
Arm vs mips
 
Fieldbus intro
Fieldbus introFieldbus intro
Fieldbus intro
 

More from cri fan

Scientific network summary
Scientific network summaryScientific network summary
Scientific network summary
cri fan
 
Virtualbox tutorial
Virtualbox tutorialVirtualbox tutorial
Virtualbox tutorialcri fan
 
Usb hid
Usb hidUsb hid
Usb hid
cri fan
 
Usb disk driver
Usb disk driverUsb disk driver
Usb disk drivercri fan
 
Usb basic
Usb basicUsb basic
Usb basiccri fan
 
Symbology upc
Symbology upcSymbology upc
Symbology upc
cri fan
 
Symbology plessey
Symbology plesseySymbology plessey
Symbology plessey
cri fan
 
Symbology code128
Symbology code128Symbology code128
Symbology code128
cri fan
 
Runtime upgrade linux
Runtime upgrade linuxRuntime upgrade linux
Runtime upgrade linuxcri fan
 
Rec soft npp
Rec soft nppRec soft npp
Rec soft nppcri fan
 
Python topic str_encoding
Python topic str_encodingPython topic str_encoding
Python topic str_encodingcri fan
 
Python intermediate tutorial
Python intermediate tutorialPython intermediate tutorial
Python intermediate tutorialcri fan
 
Python beginner tutorial
Python beginner tutorialPython beginner tutorial
Python beginner tutorialcri fan
 
Nand get type
Nand get typeNand get type
Nand get typecri fan
 
Mpeg vbr
Mpeg vbrMpeg vbr
Mpeg vbrcri fan
 
Linux wireless
Linux wirelessLinux wireless
Linux wireless
cri fan
 
Linux nand driver
Linux nand driverLinux nand driver
Linux nand drivercri fan
 
Json tutorial
Json tutorialJson tutorial
Json tutorialcri fan
 
Interrupt related
Interrupt relatedInterrupt related
Interrupt relatedcri fan
 
Hardware basic
Hardware basicHardware basic
Hardware basiccri fan
 

More from cri fan (20)

Scientific network summary
Scientific network summaryScientific network summary
Scientific network summary
 
Virtualbox tutorial
Virtualbox tutorialVirtualbox tutorial
Virtualbox tutorial
 
Usb hid
Usb hidUsb hid
Usb hid
 
Usb disk driver
Usb disk driverUsb disk driver
Usb disk driver
 
Usb basic
Usb basicUsb basic
Usb basic
 
Symbology upc
Symbology upcSymbology upc
Symbology upc
 
Symbology plessey
Symbology plesseySymbology plessey
Symbology plessey
 
Symbology code128
Symbology code128Symbology code128
Symbology code128
 
Runtime upgrade linux
Runtime upgrade linuxRuntime upgrade linux
Runtime upgrade linux
 
Rec soft npp
Rec soft nppRec soft npp
Rec soft npp
 
Python topic str_encoding
Python topic str_encodingPython topic str_encoding
Python topic str_encoding
 
Python intermediate tutorial
Python intermediate tutorialPython intermediate tutorial
Python intermediate tutorial
 
Python beginner tutorial
Python beginner tutorialPython beginner tutorial
Python beginner tutorial
 
Nand get type
Nand get typeNand get type
Nand get type
 
Mpeg vbr
Mpeg vbrMpeg vbr
Mpeg vbr
 
Linux wireless
Linux wirelessLinux wireless
Linux wireless
 
Linux nand driver
Linux nand driverLinux nand driver
Linux nand driver
 
Json tutorial
Json tutorialJson tutorial
Json tutorial
 
Interrupt related
Interrupt relatedInterrupt related
Interrupt related
 
Hardware basic
Hardware basicHardware basic
Hardware basic
 

Binutils intro

  • 1. GNU Binutils详解 版本:v1.0 Crifan Li 摘要 本文主要介绍了什么是GNU Binutils,以及Binutils都包含了哪些工具,每个工具的功能的解释,举例详解每个工 具实际使用方法。 本文提供多种格式供: 在线阅读 HTML 1 下载(7zip压缩包) HTML 8 HTMLs PDF 3 HTMLs PDF 10 2 9 CHM 4 CHM 11 TXT 5 TXT 12 RTF 6 RTF 13 WEBHELP 7 WEBHELP 14 HTML版本的在线地址为: http://www.crifan.com/files/doc/docbook/binutils_intro/release/html/binutils_intro.html 有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论: http://www.crifan.com/bbs/categories/binutils_intro/ 修订历史 修订 1.0 2013-08-29 crl 1. 添加GNU Binutils的简介 2. 把整体框架添加好了,待后续添加每个工具的详细功能和用法 1 http://www.crifan.com/files/doc/docbook/binutils_intro/release/html/binutils_intro.html http://www.crifan.com/files/doc/docbook/binutils_intro/release/htmls/index.html 3 http://www.crifan.com/files/doc/docbook/binutils_intro/release/pdf/binutils_intro.pdf 4 http://www.crifan.com/files/doc/docbook/binutils_intro/release/chm/binutils_intro.chm 5 http://www.crifan.com/files/doc/docbook/binutils_intro/release/txt/binutils_intro.txt 6 http://www.crifan.com/files/doc/docbook/binutils_intro/release/rtf/binutils_intro.rtf 7 http://www.crifan.com/files/doc/docbook/binutils_intro/release/webhelp/index.html 8 http://www.crifan.com/files/doc/docbook/binutils_intro/release/html/binutils_intro.html.7z 9 http://www.crifan.com/files/doc/docbook/binutils_intro/release/htmls/index.html.7z 10 http://www.crifan.com/files/doc/docbook/binutils_intro/release/pdf/binutils_intro.pdf.7z 11 http://www.crifan.com/files/doc/docbook/binutils_intro/release/chm/binutils_intro.chm.7z 12 http://www.crifan.com/files/doc/docbook/binutils_intro/release/txt/binutils_intro.txt.7z 13 http://www.crifan.com/files/doc/docbook/binutils_intro/release/rtf/binutils_intro.rtf.7z 14 http://www.crifan.com/files/doc/docbook/binutils_intro/release/webhelp/binutils_intro.webhelp.7z 2
  • 2. GNU Binutils详解: Crifan Li 版本:v1.0 出版日期 2013-08-29 版权 © 2013 Crifan, http://crifan.com 15 本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5) 15 http://www.crifan.com/files/doc/docbook/soft_dev_basic/release/html/soft_dev_basic.html#cc_by_nc
  • 3. 目录 前言 ........................................................................................................................................ iv 1. 本文目的 ...................................................................................................................... iv 1. GNU Binutils介绍 ................................................................................................................ 1 1.1. 什么是GNU Binutils .................................................................................................. 1 1.2. GNU Binutils都包含哪些工具 ..................................................................................... 1 1.2.1. Binutils中包含的主要工具 ................................................................................ 1 1.2.2. Binutils中包含的其他次要工具 .......................................................................... 2 2. Binutils之ld .......................................................................................................................... 4 3. Binutils之as ......................................................................................................................... 5 4. Binutils之addr2line .............................................................................................................. 6 5. Binutils之ar .......................................................................................................................... 7 6. Binutils之c++filt .................................................................................................................. 8 7. Binutils之dlltool ................................................................................................................... 9 8. Binutils之gold .................................................................................................................... 10 9. Binutils之gprof .................................................................................................................. 11 10. Binutils之nlmconv ........................................................................................................... 12 11. Binutils之nm .................................................................................................................... 13 12. Binutils之objcopy ............................................................................................................ 14 13. Binutils之objdump .......................................................................................................... 15 14. Binutils之ranlib ................................................................................................................ 16 15. Binutils之readelf .............................................................................................................. 17 16. Binutils之size ................................................................................................................... 18 17. Binutils之strings .............................................................................................................. 19 18. Binutils之strip .................................................................................................................. 20 19. Binutils之windmc ............................................................................................................ 21 20. Binutils之winres ............................................................................................................... 22 参考书目 ................................................................................................................................ 23 iii
  • 4. 前言 1. 本文目的 话说,很久之前,从接触Linux开始,陆陆续续的,知道一些新名词,新工具,比如objcopy,nm等 等。 包括后来折腾嵌入式开发,多多少少尝试这些工具的实际的使用,但是一直不是很清楚这些东西的真正 来历。 知道后来,才知道,原来这一系列的工具,就是所谓的Binutils,然后才有了此文: 整理出来,Binutils是啥,包含哪些工具,都是如何使用的。 即:本文目的在于,将GNU Binutils中的各种工具,的功能解释一下,并且用实际例子,说明如何使 用,以及主要是用来干啥的。 以实现,看了此文后,了解了GNU Binutils中各种工具的实际使用,并且对于编译链接等方面的知识, 更加深入的了解。 iv
  • 5. 第 1 章 GNU Binutils介绍 1 相关旧帖:GNU binutils工具使用 相关旧帖:【整理】关于Toolchain,cross toolchain,cross compiler 2 1.1. 什么是GNU Binutils GNU Binutils,即GNU Binary Utilities的简写,一般简称为Binutils。 GNU Binutils,中文可以翻译为GNU的二进制工具集。 3 参考官网GNU Binutils 的解释,可以解释为: GNU Binutils,是一组二进制工具的集合。 其中: • 一组 一组的意思是,不止一个,很多个。 • 二进制 二进制的意思是,这些工具,都是专门针对于二进制的,去操作二进制的 与二进制相对应的,至少有,文本,源代码 换句话说,这些工具,不是用于去操作,编译文本的,不是用来编译源代码的,而是专门用于操作二 进制的。 而二进制的东西,此处主要指的是,源代码编译出来的目标(*.o)文件,(Linux下面的elf等)可执行文 件等等。 • 工具 工具的意思是,这些东西,各有对对应的用途,可以用来干活,实现你所需要的目的,满足你的需求 至于实现什么目的,满足什么需求,则是不同的工具,有其特定的用途,才有了后面要介绍的,针对 每个工具,所去详细解释其用途和用法。 1.2. GNU Binutils都包含哪些工具 如上所述,Binutils,是一组工具的统称,其包含了很多工具。 Binutils主要包括了ld和as。 另外也包括了,相对次要的,但实际上也很常用的,其他工具,比如ar,nm,objcopy等等。 下面先简要的介绍一下,这些工具是什么,以及主要功能: 1.2.1. Binutils中包含的主要工具 • ld 链接器。 1 2 3 http://www.crifan.com/gnu_binutils_tools/ http://www.crifan.com/summary_about_toolchain_cross_compiler/ http://www.gnu.org/software/binutils/ 1
  • 6. GNU Binutils介绍 将多个目标文件,链接成一个可执行文件(或目标库文件)。 • 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 2
  • 7. GNU Binutils介绍 拷贝并翻译(转换)文件 可用于不同格式的二进制文件的转换 • 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 而接下来的章节,就是详细的介绍每一个工具的详细功能和具体用法了。 3
  • 8. 第 2 章 Binutils之ld 4
  • 9. 第 3 章 Binutils之as 5
  • 10. 第 4 章 Binutils之addr2line 6
  • 11. 第 5 章 Binutils之ar 7
  • 12. 第 6 章 Binutils之c++filt 8
  • 13. 第 7 章 Binutils之dlltool 9
  • 14. 第 8 章 Binutils之gold 10
  • 15. 第 9 章 Binutils之gprof 11
  • 16. 第 10 章 Binutils之nlmconv 12
  • 17. 第 11 章 Binutils之nm 13
  • 18. 第 12 章 Binutils之objcopy 14
  • 19. 第 13 章 Binutils之objdump 15
  • 20. 第 14 章 Binutils之ranlib 16
  • 21. 第 15 章 Binutils之readelf 17
  • 22. 第 16 章 Binutils之size 18
  • 23. 第 17 章 Binutils之strings 19
  • 24. 第 18 章 Binutils之strip 20
  • 25. 第 19 章 Binutils之windmc 21
  • 26. 第 20 章 Binutils之winres 22