2010-02-22 167 views

回答

122

編譯是將源代碼轉換爲目標代碼的行爲。

鏈接是將目標代碼與庫結合到原始可執行文件中的行爲。

Building是由編譯和鏈接組成的序列,可能還有其他任務,如安裝程序創建。

許多編譯器在編譯源代碼後自動處理鏈接步驟。

6

它們通常用於表示相同的事物。然而,「建立」也可以意味着編譯和鏈接整個應用程序(在例如C和C++的情況下),或甚至更多,包括,除其他

  • 包裝
  • 自動(單元的全部過程和/或集成)測試
  • 安裝代
  • 安裝/部署
  • 文件/現場發電
  • 報告生成(如測試結果,覆蓋)。

有喜歡Maven系統,其與生命週期,它由幾個階段,產生不同的僞影,可能使用的結果和工件從先前階段的概念概括此。

16

wikipedia

在計算機軟件的領域,術語軟件構建指要麼轉換源代碼文件到獨立軟件工件(一個或多個),可以在計算機上運行的過程中,或者這樣做的結果。軟件構建的最重要步驟之一是彙編過程,其中源代碼文件被轉換爲可執行代碼。

雖然簡單程序的過程由一個單一的文件被編譯,對於複雜軟件的源代碼可以由許多文件,並可以以不同的方式產生許多不同的版本相結合。

2

大多數人可能會互換使用這些條款。 你可以看到一個細微差別:編譯只是你通過編譯器傳遞一些源文件的步驟(gcc,javac,無論)。

構建可以被視爲檢查源的更一般過程,爲已編譯的工件創建目標文件夾,檢查依賴關係,選擇必須編譯的內容,運行自動化測試,創建tar/zip/ditributions,推送到一個FTP等...

7

構建可以被看作是一個腳本,它包含許多步驟 - 其中的主要步驟是編譯代碼。 其它可以

  • 運行測試
  • 報告(例如覆蓋)
  • 靜態分析
  • 前和生成後對某些文件的步驟
  • 運行自定義工具
  • 創建安裝
  • 爲它們添加標籤並將它們部署/複製到存儲庫
4

根據我的經驗,我會說「編譯」是指將一個或多個人類可讀的源文件轉換爲字節碼(C語言中的目標文件),而「構建」指定整個編譯,鏈接過程和任何還需要完成整個軟件包或項目。