概述
交叉編譯,也稱跨平臺(tái)編譯,就是在一個(gè)平臺(tái)上編譯源代碼,生成結(jié)果為另一個(gè)平臺(tái)上的可執(zhí)行代碼。這里的平臺(tái)包含兩個(gè)概念:體系架構(gòu) (如 AMD, ARM) 和 操作系統(tǒng) (如 Linux, Windows)。同一個(gè)體系架構(gòu)可以運(yùn)行不同的操作系統(tǒng),反過(guò)來(lái),同一個(gè)操作系統(tǒng)也可以運(yùn)行在不同的體系架構(gòu)上。
Go 實(shí)現(xiàn)跨平臺(tái)編譯的思想其實(shí)很簡(jiǎn)單:通過(guò)保存可以生成最終機(jī)器碼的多份翻譯代碼, 在編譯時(shí)根據(jù) GOARCH=體系架構(gòu) 和GOOS=操作系統(tǒng)參數(shù)進(jìn)行初始化設(shè)置, 最終調(diào)用對(duì)應(yīng)平臺(tái)編寫的特定方法來(lái)生成機(jī)器碼,從而實(shí)現(xiàn)跨平臺(tái)編譯。
例子
下面的例子統(tǒng)一以 amd64
作為體系架構(gòu)參數(shù),讀者請(qǐng)根據(jù)自己的環(huán)境更換對(duì)應(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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
Linux系統(tǒng)
-
機(jī)器碼
-
交叉編譯器
相關(guān)推薦
驗(yàn)證工作作為典型的形式化方法的工程化案例,應(yīng)用了形式化方法的需求分析、建模與驗(yàn)證,由此驗(yàn)證了形式化方法的可行性與有效性。
發(fā)表于 03-24 11:01
?1484次閱讀
嵌入式系統(tǒng)工程化設(shè)計(jì)7——計(jì)算機(jī)可靠性設(shè)計(jì)原創(chuàng)·林超100前一講高可靠性是嵌入式系統(tǒng)的關(guān)鍵設(shè)計(jì)因素,但是講到的內(nèi)容是普適性的,對(duì)任何帶電子設(shè)備的設(shè)備都需要。但是針對(duì)信息處理和控制的嵌入式計(jì)算機(jī)
發(fā)表于 11-08 06:51
了行業(yè)的飛速發(fā)展,可以說(shuō)這個(gè)行業(yè)在風(fēng)口上。但是,也發(fā)現(xiàn)我們的行業(yè)的不足,基礎(chǔ)嚴(yán)重依賴國(guó)外,企業(yè)設(shè)計(jì)能力參差不齊,從業(yè)人員培訓(xùn)費(fèi)時(shí)費(fèi)力,導(dǎo)致產(chǎn)品可靠性低下,項(xiàng)目遭受重大損失。解決這一問(wèn)題,需要提升我國(guó)嵌入式計(jì)算機(jī)工程化設(shè)計(jì)能力。什么是工程化首先什么是
發(fā)表于 11-09 06:37
主要探討微機(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次下載
交叉平臺(tái)開(kāi)源編譯系統(tǒng)_cmake入門
發(fā)表于 01-22 13:59
?9次下載
作為Web開(kāi)發(fā)的重要組成部分,CSS技術(shù)演進(jìn)也在推動(dòng)著前端工程化不斷進(jìn)步。本文將從CSS模塊化、namespace約束、CSS in JS方案三個(gè)方面逐步深入解讀CSS在工程化領(lǐng)域取得的成果
發(fā)表于 09-27 15:10
?0次下載
5.1.1 嵌入式交叉編譯環(huán)境的搭建 交叉編譯的概念在第4章中已經(jīng)詳細(xì)講述過(guò),搭建交叉編譯環(huán)境是
發(fā)表于 10-18 16:44
?1次下載
的主要原因在于,多數(shù)嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源供編譯過(guò)程使用,因而只好將編譯工程轉(zhuǎn)移到高性能的主機(jī)中進(jìn)行。 linux下的交叉編譯環(huán)境
發(fā)表于 10-31 11:26
?7次下載
《STM8交叉編譯器用戶指南》是程序員為STM8微控制器環(huán)境編寫C程序的參考指南。它概述了交叉編譯器的工作原理,并解釋了如何
發(fā)表于 06-04 08:00
?12次下載
Prelink的交叉編譯和使用詳解
發(fā)表于 06-20 12:03
?3540次閱讀
基于工程化參數(shù)優(yōu)化的遙測(cè)伺服系統(tǒng)
發(fā)表于 06-30 15:57
?6次下載
了行業(yè)的飛速發(fā)展,可以說(shuō)這個(gè)行業(yè)在風(fēng)口上。但是,也發(fā)現(xiàn)我們的行業(yè)的不足,基礎(chǔ)嚴(yán)重依賴國(guó)外,企業(yè)設(shè)計(jì)能力參差不齊,從業(yè)人員培訓(xùn)費(fèi)時(shí)費(fèi)力,導(dǎo)致產(chǎn)品可靠性低下,項(xiàng)目遭受重大損失。解決這一問(wèn)題,需要提升我國(guó)嵌入式計(jì)算機(jī)工程化設(shè)計(jì)能力。什么是工程化首先什么是
發(fā)表于 11-04 10:21
?15次下載
交叉編譯器中“交叉”的意思就是在一個(gè)架構(gòu)上編譯另外一個(gè)架構(gòu)的代碼,相當(dāng)于兩種架構(gòu)“交叉”起來(lái)了。Ubuntu 自帶的 gcc
發(fā)表于 09-29 09:12
?3513次閱讀
交叉編譯工具安裝 (glibc版本需要和開(kāi)發(fā)板上的版本相兼容)
發(fā)表于 10-28 09:31
?3457次閱讀
交叉編譯選項(xiàng) 編譯Linux,通常只需要運(yùn)行 make menuconfig 配置要編譯的模塊,然后運(yùn)行 make 。Linux默認(rèn)是做本地編譯
發(fā)表于 09-27 11:48
?844次閱讀
評(píng)論