什麼是工具鏈

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等工具

按照先編譯後連接等相關的編譯程序的內在邏輯

串起來,就成了咱們所說的:工具鏈

相關文章
相關標籤/搜索