• 什么是工具链


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

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

    • 工具

      工具,即tool

      工具,是用来干活的

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

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

      1. 编译

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

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

        编译所需要的工具是:编译器

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

      2. 链接

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

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

        链接所需要的工具是:链接器

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

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

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

  • 相关阅读:
    WPF拖拽文件(拖入拖出),监控拖拽到哪个位置,类似百度网盘拖拽
    开源文字识别软件tesseract
    opencv使用findContours等方法出现内存损坏之类的不能调用问题
    电子白板,控件播放功能,屏幕分享
    设置元素等待
    selenium上传文件的方法
    修改页面信息
    浏览器视口大小查看
    测试文件上传接口
    python 使用requests下载文件
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/6835048.html
Copyright © 2020-2023  润新知