概述
交叉編譯,也稱跨平臺編譯,就是在一個平臺上編譯源代碼,生成結果為另一個平臺上的可執行代碼。這里的平臺包含兩個概念:體系架構 (如 AMD, ARM) 和 操作系統 (如 Linux, Windows)。同一個體系架構可以運行不同的操作系統,反過來,同一個操作系統也可以運行在不同的體系架構上。
Go 實現跨平臺編譯的思想其實很簡單:通過保存可以生成最終機器碼的多份翻譯代碼, 在編譯時根據 GOARCH=體系架構 和GOOS=操作系統參數進行初始化設置, 最終調用對應平臺編寫的特定方法來生成機器碼,從而實現跨平臺編譯。
例子
下面的例子統一以 amd64
作為體系架構參數,讀者請根據自己的環境更換對應參數。
Mac
編譯為 Linux 代碼
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
編譯為 Windows 代碼
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Linux
編譯為 Mac 代碼
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
編譯為 Windows 代碼
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Windows
編譯為 Mac 代碼
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
編譯為 Linux 代碼
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
Linux系統
+關注
關注
4文章
594瀏覽量
27406 -
機器碼
+關注
關注
0文章
12瀏覽量
8320 -
交叉編譯器
+關注
關注
0文章
10瀏覽量
7544
發布評論請先 登錄
相關推薦
嵌入式系統工程化設計要注意哪些方面
嵌入式系統工程化設計7——計算機可靠性設計原創·林超100前一講高可靠性是嵌入式系統的關鍵設計因素,但是講到的內容是普適性的,對任何帶電子設備的設備都需要。但是針對信息處理和控制的嵌入式計算機
發表于 11-08 06:51
嵌入式系統工程化設計的相關資料分享
了行業的飛速發展,可以說這個行業在風口上。但是,也發現我們的行業的不足,基礎嚴重依賴國外,企業設計能力參差不齊,從業人員培訓費時費力,導致產品可靠性低下,項目遭受重大損失。解決這一問題,需要提升我國嵌入式計算機工程化設計能力。什么是工程化首先什么是
發表于 11-09 06:37
監控系統中控制軟件的工程化設計與實現
主要探討微機監控系統中控制軟件的工程化設計方法,介紹了模塊化程序設計和結構化程序設計的基本原理,具體分析了在電鍋爐微機控制系統中,采用模塊化程序設計和結構
發表于 03-18 10:33
?21次下載
CSS工程化實踐成果分析
作為Web開發的重要組成部分,CSS技術演進也在推動著前端工程化不斷進步。本文將從CSS模塊化、namespace約束、CSS in JS方案三個方面逐步深入解讀CSS在工程化領域取得的成果
發表于 09-27 15:10
?0次下載
arm-linux的交叉編譯環境解析
的主要原因在于,多數嵌入式目標系統不能提供足夠的資源供編譯過程使用,因而只好將編譯工程轉移到高性能的主機中進行。 linux下的交叉編譯環境
發表于 10-31 11:26
?7次下載
ST微電子STM8的C交叉編譯用戶指南
《STM8交叉編譯器用戶指南》是程序員為STM8微控制器環境編寫C程序的參考指南。它概述了交叉編譯器的工作原理,并解釋了如何
發表于 06-04 08:00
?12次下載
嵌入式系統工程化設計
了行業的飛速發展,可以說這個行業在風口上。但是,也發現我們的行業的不足,基礎嚴重依賴國外,企業設計能力參差不齊,從業人員培訓費時費力,導致產品可靠性低下,項目遭受重大損失。解決這一問題,需要提升我國嵌入式計算機工程化設計能力。什么是工程化首先什么是
發表于 11-04 10:21
?15次下載
Linux交叉編譯選項與源碼與目標文件分離
交叉編譯選項 編譯Linux,通常只需要運行 make menuconfig 配置要編譯的模塊,然后運行 make 。Linux默認是做本地編譯
評論