你知道 GNU Binutils 吗?【binutils】
概述
从事 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
---------------------
作者:阿基米东
来源:CSDN
原文:https://blog.csdn.net/lu_embedded/article/details/78205161
版权声明:本文为博主原创文章,转载请附上博文链接!
你知道 GNU Binutils 吗?【binutils】的更多相关文章
- GNU Binutils工具
参考<程序员的自我修养---连接.装载与库> 以下内容转贴自 http://www.cnblogs.com/xuxm2007/archive/2013/02/21/2920890.html ...
- Binutils工具集常用工具
GNU为GCC编译器提供了配套的辅助工具集(Binutils)http://www.gnu.org/software/binutils/ 1. addr2line ①将指定地址转换为对应的文件名和行号 ...
- GNU 下命令objcopy 用法
概念: 将目标文件的一部分或者全部内容拷贝到另外一个目标文件中,或者实现目标文件的格式转换. 常用转换: 1 把elf格式转成s19格式: objcopy --srec-len --srec-forc ...
- 使用 GCC 和 GNU Binutils 编写能在 x86 实模式运行的 16 位代码
不可否认,这次的标题有点长.之所以把标题写得这么详细,主要是为了搜索引擎能够准确地把确实需要了解 GCC 生成 16 位实模式代码方法的朋友带到我的博客.先说一下背景,编写能在 x86 实模式下运行的 ...
- Linux 桌面玩家指南:08. 使用 GCC 和 GNU Binutils 编写能在 x86 实模式运行的 16 位代码
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- GNU Binutils简介及基本用法
[时间:2017-06] [状态:Open] [关键词:GNU, binutils, as, ld, ar, 基础工具,linux,链接器,汇编器] 0 简介 GNU Binary Utilities ...
- 编译 GNU binutils
重新以 arm 用户登陆,让新设置的环境变量起作用. [arm@localhost arm]#su arm [arm@localhost arm]#cd ${SRC} [arm@localhost t ...
- NeuSoft(1)构建嵌入式交叉编译环境
操作系统版本:ubuntu 12.04 内核名称:Linux 内核发行版:3.2.0-generic 内核版本:#50-Ubuntu SMP Mon Sep 12 21:18:14 UTC 2011 ...
- Debugging Information in Separate Files
[Debugging Information in Separate Files] gdb allows you to put a program's debugging information in ...
随机推荐
- how to Simply Singleton Navigate the deceptively simple Singleton pattern---reference
http://www.javaworld.com/article/2073352/core-java/simply-singleton.html JAVA DESIGN PATTERNS By Dav ...
- JSON函数表1
jsoncpp 主要包含三个class:Value.Reader.Writer.注意Json::Value 只能处理 ANSI 类型的字符串,如果 C++ 程序是用 Unicode 编码的,最好加一个 ...
- Arduino Nano与SIM800C 通信
首先感谢 原文作者:https://blog.csdn.net/weixin_44481398/article/details/86596933#commentBox 找了好久没有找到,使用他的代码一 ...
- input 禁止输入特殊字符
方式一:拿到value值以后 在你传递之前处理 function stripscript(value) { var pattern = new RegExp("[`~!@#$^&*( ...
- js div模拟水平滚动条
这个也是我百度到的,但是忘记保存连接了,现在把代码贴上来,有需要的可以参考一下: <!DOCTYPE html> <html> <head> <meta ch ...
- 用vue写一个分页器代码
分页是项目中常会用到的,网上的插件也很多,但是有些功能太齐全反而不是必要的,所以抽时间自己写了一下(小白写代码,若发现问题还请及时赐教,感激不尽……) 如图,想要一个这样的页码: a. 上一页.下一页 ...
- 1、CentOs安装
转载自:代码之美 0.准备工作: 一台没系统的普通电脑u盘一个(大于1G,最小安装的话不超过1G,根据选择系统大小匹配U盘即可)CentOS7.3 iso文件一个UltraISO工具 1.制作U盘 ① ...
- Java#Spring框架下注解解析
@Bean 定义Bean @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里.添加的bean的id为方法名 @Configura ...
- Django REST Framework(DRF)_第四篇
DRF分页(总共三种) PageNumberPagination(指定第n页,每页显示n条数据) 说明 既然要用人家的那么我们就先来看下源码,这个分页类源码中举例通过参数指定第几页和每页显示的数据:h ...
- MYSQL获得查询记录的行号
对于获得查询记录的行号这一功能,Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的ROWNUM,MS SQL Server 则在 2005 版本中提供了ROW_NUMBER()函数. ...