概述
交叉編譯,也稱跨平臺編譯,就是在一個平臺上編譯源代碼,生成結(jié)果為另一個平臺上的可執(zhí)行代碼。這里的平臺包含兩個概念:體系架構(gòu) (如 AMD, ARM) 和 操作系統(tǒng) (如 Linux, Windows)。同一個體系架構(gòu)可以運(yùn)行不同的操作系統(tǒng),反過來,同一個操作系統(tǒng)也可以運(yùn)行在不同的體系架構(gòu)上。
Go 實(shí)現(xiàn)跨平臺編譯的思想其實(shí)很簡單:通過保存可以生成最終機(jī)器碼的多份翻譯代碼, 在編譯時根據(jù) GOARCH=體系架構(gòu) 和GOOS=操作系統(tǒng)參數(shù)進(jìn)行初始化設(shè)置, 最終調(diào)用對應(yīng)平臺編寫的特定方法來生成機(jī)器碼,從而實(shí)現(xiàn)跨平臺編譯。
例子
下面的例子統(tǒng)一以 amd64
作為體系架構(gòu)參數(shù),讀者請根據(jù)自己的環(huán)境更換對應(yīng)參數(shù)。
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系統(tǒng)
+關(guān)注
關(guān)注
4文章
603瀏覽量
28315 -
機(jī)器碼
+關(guān)注
關(guān)注
0文章
13瀏覽量
8416 -
交叉編譯器
+關(guān)注
關(guān)注
0文章
10瀏覽量
7726
發(fā)布評論請先 登錄
電機(jī)試驗(yàn)電源制動單元工程化計算及應(yīng)用
嵌入式系統(tǒng)工程化設(shè)計要注意哪些方面
嵌入式系統(tǒng)工程化設(shè)計的相關(guān)資料分享
監(jiān)控系統(tǒng)中控制軟件的工程化設(shè)計與實(shí)現(xiàn)
CSS工程化實(shí)踐成果分析
嵌入式交叉編譯環(huán)境的搭建解析
arm-linux的交叉編譯環(huán)境解析
ST微電子STM8的C交叉編譯用戶指南

嵌入式系統(tǒng)工程化設(shè)計

評論