你知道 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 ...
随机推荐
- Scala学习五——类
一.本章要点 类中的字段自动带有getter方法和setter方法 你可以用定制的getter/setter方法替换掉字段的定义,而不必修改使用类的客户端——这就是所谓的”统一访问原则“ 用@Bean ...
- NET Core:搭建私有Nuget服务器以及打包发布Nuget包
docker 安装 https://www.cnblogs.com/liuxiaoji/p/11014329.html 1.使用docker搭建私有Nuget服务器 docker run -d -p ...
- C#面向对象12 集合
ArrayList和HashTable集合 1.ArrayList集合 ***添加元素 using System; using System.Collections.Generic; using Sy ...
- Lua入门记录
学习资料 Lua入门和Lua高阶章节 Lua中文文档 阅读笔记,只是记录了知识点和一些注意点,详细的看上面提供的学习资料链接 Lua 基础数据类型 nil(空) boolean(布尔) Lua 中 n ...
- 3.移动端自动化测试-appium环境搭建(原理)
appium自动化原理: 需要服务端(appium启动),手机端(adb连接设备),脚本端(pycharm)就可以进行 自己总结下: 手机和脚本连接:1.adb连接,2靠脚本导入驱动. 脚本和服务端连 ...
- vue2.0+按需引入element-ui报错
项目使用vue脚手架自动生成的,vue版本为^2.5.16.项目中需要按需使用element-ui,根据element-ui的官方文档,一开始在babel.config.js文件中修改配置 modul ...
- 【wifi移植 2】 移植wpa_supplicant
参考文章: http://bbs.eeworld.com.cn/thread-447273-1-1.html(加精作品) 1. 下载源码 下载wpa_supplicant-2.2.tar(openss ...
- Windows Server 2016分层式存储,使用PowerShell修改底层介质类型
新部署的备份服务器,需要做分层式存储,按照网上最常见一个作者叫刘兵的文档,名叫<Windows Server2016分层存储技术详细拆解手册>,做到使用PowerShell修改磁盘的Med ...
- [ZOJ 3063] Draw Something Cheat
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4706 思路:字符串是一个集合(由0到多个A~Z字符组成),我们可以假 ...
- mybatis总体分析
Mybatis是一个半orp框架,说是半,也就是不完全是,还有很多地方是需要开发人员完成的.发现很多互联网公司使用Mybatis,而不是hibernate.应该是因为Mybatis不但有orp的优势, ...