概述
交叉編譯,也稱跨平臺編譯,就是在一個(gè)平臺上編譯源代碼,生成結(jié)果為另一個(gè)平臺上的可執(zhí)行代碼。這里的平臺包含兩個(gè)概念:體系架構(gòu) (如 AMD, ARM) 和 操作系統(tǒng) (如 Linux, Windows)。同一個(gè)體系架構(gòu)可以運(yùn)行不同的操作系統(tǒng),反過來,同一個(gè)操作系統(tǒng)也可以運(yùn)行在不同的體系架構(gòu)上。
Go 實(shí)現(xiàn)跨平臺編譯的思想其實(shí)很簡單:通過保存可以生成最終機(jī)器碼的多份翻譯代碼, 在編譯時(shí)根據(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
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
614瀏覽量
29905 -
機(jī)器碼
+關(guān)注
關(guān)注
0文章
13瀏覽量
8514 -
交叉編譯器
+關(guān)注
關(guān)注
0文章
10瀏覽量
7912
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
電機(jī)試驗(yàn)電源制動單元工程化計(jì)算及應(yīng)用
制動單元工程化計(jì)算及應(yīng)用.pdf
【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時(shí)間告知,刪除內(nèi)容!
發(fā)表于 04-27 19:31
嵌入式系統(tǒng)工程化設(shè)計(jì)要注意哪些方面
嵌入式系統(tǒng)工程化設(shè)計(jì)7——計(jì)算機(jī)可靠性設(shè)計(jì)原創(chuàng)·林超100前一講高可靠性是嵌入式系統(tǒng)的關(guān)鍵設(shè)計(jì)因素,但是講到的內(nèi)容是普適性的,對任何帶電子設(shè)備的設(shè)備都需要。但是針對信息處理和控制的嵌入式計(jì)算機(jī)
發(fā)表于 11-08 06:51
嵌入式系統(tǒng)工程化設(shè)計(jì)的相關(guān)資料分享
了行業(yè)的飛速發(fā)展,可以說這個(gè)行業(yè)在風(fēng)口上。但是,也發(fā)現(xiàn)我們的行業(yè)的不足,基礎(chǔ)嚴(yán)重依賴國外,企業(yè)設(shè)計(jì)能力參差不齊,從業(yè)人員培訓(xùn)費(fèi)時(shí)費(fèi)力,導(dǎo)致產(chǎn)品可靠性低下,項(xiàng)目遭受重大損失。解決這一問題,需要提升我國嵌入式計(jì)算機(jī)工程化設(shè)計(jì)能力。什么是工程化首先什么是
發(fā)表于 11-09 06:37
監(jiān)控系統(tǒng)中控制軟件的工程化設(shè)計(jì)與實(shí)現(xiàn)
主要探討微機(jī)監(jiān)控系統(tǒng)中控制軟件的工程化設(shè)計(jì)方法,介紹了模塊化程序設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)的基本原理,具體分析了在電鍋爐微機(jī)控制系統(tǒng)中,采用模塊化程序設(shè)計(jì)和結(jié)構(gòu)
發(fā)表于 03-18 10:33
?21次下載
CSS工程化實(shí)踐成果分析
作為Web開發(fā)的重要組成部分,CSS技術(shù)演進(jìn)也在推動著前端工程化不斷進(jìn)步。本文將從CSS模塊化、namespace約束、CSS in JS方案三個(gè)方面逐步深入解讀CSS在工程化領(lǐng)域取得的成果
發(fā)表于 09-27 15:10
?0次下載
嵌入式交叉編譯環(huán)境的搭建解析
5.1.1 嵌入式交叉編譯環(huán)境的搭建 交叉編譯的概念在第4章中已經(jīng)詳細(xì)講述過,搭建交叉編譯環(huán)境是
發(fā)表于 10-18 16:44
?1次下載
arm-linux的交叉編譯環(huán)境解析
的主要原因在于,多數(shù)嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源供編譯過程使用,因而只好將編譯工程轉(zhuǎn)移到高性能的主機(jī)中進(jìn)行。 linux下的交叉編譯環(huán)境
發(fā)表于 10-31 11:26
?7次下載
ST微電子STM8的C交叉編譯用戶指南
《STM8交叉編譯器用戶指南》是程序員為STM8微控制器環(huán)境編寫C程序的參考指南。它概述了交叉編譯器的工作原理,并解釋了如何
發(fā)表于 06-04 08:00
?12次下載
嵌入式系統(tǒng)工程化設(shè)計(jì)
了行業(yè)的飛速發(fā)展,可以說這個(gè)行業(yè)在風(fēng)口上。但是,也發(fā)現(xiàn)我們的行業(yè)的不足,基礎(chǔ)嚴(yán)重依賴國外,企業(yè)設(shè)計(jì)能力參差不齊,從業(yè)人員培訓(xùn)費(fèi)時(shí)費(fèi)力,導(dǎo)致產(chǎn)品可靠性低下,項(xiàng)目遭受重大損失。解決這一問題,需要提升我國嵌入式計(jì)算機(jī)工程化設(shè)計(jì)能力。什么是工程化首先什么是
發(fā)表于 11-04 10:21
?15次下載
交叉編譯器安裝教程
交叉編譯器中“交叉”的意思就是在一個(gè)架構(gòu)上編譯另外一個(gè)架構(gòu)的代碼,相當(dāng)于兩種架構(gòu)“交叉”起來了。Ubuntu 自帶的 gcc
Linux交叉編譯選項(xiàng)與源碼與目標(biāo)文件分離
交叉編譯選項(xiàng) 編譯Linux,通常只需要運(yùn)行 make menuconfig 配置要編譯的模塊,然后運(yùn)行 make 。Linux默認(rèn)是做本地編譯
Go工程化-交叉編譯概述
評論