什么是工具链
http://www.crifan.com/files/doc/docbook/cross_compile/release/html/cross_compile.html
所谓的工具链,两部分的含义:
- 工具
工具,即tool
工具,是用来干活的
此处要干的活,目标是为了:生成(可以运行的)程序或库文件
而为了达成此目标,内部的执行过程和逻辑主要包含了:
- 编译
编译的输入(对象)是:程序代码
编译输出(目标)是:目标文件
编译所需要的工具是:编译器
编译器,常见的编译器,即为gcc
- 链接
链接的输入(对象)是:(程序运行时所依赖的,或者某个库所依赖的另外一个)库(文件)
链接的输出(目标)是:程序的可执行文件,或者是可以被别人调用的完整的库文件
链接所需要的工具是:链接器
链接器,即ld
即,此处,为了将程序代码,编译成可执行文件,涉及到编译,链接(等其他步骤),要依赖到很多相关的工具,最核心的是编译器gcc,链接器ld。
而此处,所谓的工具,主要指的就是:和程序编译链接等相关的gcc,ld等工具
binutils包含了ld等工具 实际上,上面所说的ld,只是处理操作目标文件,二进制文件的最主要的一个工具
而和操作目标等文件相关的,还有其他很多工具的:as,objcopy,strip,ar等等工具的
所以,对此,GNU官网,弄出一个binutils,即binary utils,二进制工具(包),集成了这些,和操作二进制相关的工具集合,叫做binutils
所以,之后你所见到的,常见的工具,就是那个著名的GNU Binutils了。
更加详细的解释,参见教程:GNU Binutils详解
- 编译
- 链
链,即链条,chain
之所以能称为链,你是说明不止一个东西,然后,按照对应的逻辑,串在一起,链在一起
而对应的,涉及到的:
- 不止一个东西
指的是就是前面所说的那个工具,即:和程序编译链接等相关的gcc,binutils等工具
- 按照对应的逻辑
指的就是,按照程序本身编译链接的先后顺序,即:
先编译,后链接,再进行后期其他的处理等等,比如用objcopy去操作相应的目标文件等等。
- 不止一个东西
如此的,将:
和程序编译链接等相关的gcc,binutils等工具
按照先编译后链接等相关的编译程序的内在逻辑
串起来,就成了我们所说的:工具链
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2016-05-10 WPF学习笔记-用Expression Blend制作自定义按钮
2016-05-10 WPF学习笔记-用Expression Design制作矢量图然后导出为XAML
2015-05-10 boost库之多线程间通信