什么是工具链

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

所谓的工具链,两部分的含义:html

  • 工具

    工具,即tool工具

    工具,是用来干活的spa

    此处要干的活,目标是为了:生成(能够运行的)程序或库文件htm

    而为了达成此目标,内部的执行过程和逻辑主要包含了:对象

    1. 编译

      编译的输入(对象)是:程序代码教程

      编译输出(目标)是:目标文件ip

      编译所须要的工具是:编译器get

      编译器,常见的编译器,即为gcc编译器

       

    2. 连接

      连接的输入(对象)是:(程序运行时所依赖的,或者某个库所依赖的另一个)库(文件)it

      连接的输出(目标)是:程序的可执行文件,或者是能够被别人调用的完整的库文件

      连接所须要的工具是:连接器

      连接器,即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等工具

按照先编译后连接等相关的编译程序的内在逻辑

串起来,就成了咱们所说的:工具链

相关文章
相关标签/搜索