0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Go工程化-交叉編譯概述

冬至子 ? 來(lái)源:洋芋土豆 ? 作者:真沒(méi)什么深度 ? 2023-05-22 17:15 ? 次閱讀

概述

交叉編譯,也稱跨平臺(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)
    +關(guān)注

    關(guān)注

    4

    文章

    593

    瀏覽量

    27397
  • 機(jī)器碼
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    8314
  • 交叉編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    7542
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    形式方法的工程化

    驗(yàn)證工作作為典型的形式方法的工程化案例,應(yīng)用了形式方法的需求分析、建模與驗(yàn)證,由此驗(yàn)證了形式方法的可行性與有效性。
    的頭像 發(fā)表于 03-24 11:01 ?1484次閱讀
    形式<b class='flag-5'>化</b>方法的<b class='flag-5'>工程化</b>

    嵌入式系統(tǒng)工程化設(shè)計(jì)要注意哪些方面

    嵌入式系統(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

    嵌入式系統(tǒng)工程化設(shè)計(jì)的相關(guān)資料分享

    了行業(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

    監(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次下載

    交叉平臺(tái)開(kāi)源編譯系統(tǒng)_cmake入門

    交叉平臺(tái)開(kāi)源編譯系統(tǒng)_cmake入門
    發(fā)表于 01-22 13:59 ?9次下載

    CSS工程化實(shí)踐成果分析

    作為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次下載

    嵌入式交叉編譯環(huán)境的搭建解析

    5.1.1 嵌入式交叉編譯環(huán)境的搭建 交叉編譯的概念在第4章中已經(jīng)詳細(xì)講述過(guò),搭建交叉編譯環(huán)境是
    發(fā)表于 10-18 16:44 ?1次下載

    arm-linux的交叉編譯環(huán)境解析

    的主要原因在于,多數(shù)嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源供編譯過(guò)程使用,因而只好將編譯工程轉(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次下載
    ST微電子STM8的C<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>用戶指南

    Prelink的交叉編譯和使用詳解

    Prelink的交叉編譯和使用詳解
    的頭像 發(fā)表于 06-20 12:03 ?3540次閱讀
    Prelink的<b class='flag-5'>交叉</b><b class='flag-5'>編譯</b>和使用詳解

    基于工程化參數(shù)優(yōu)化的遙測(cè)伺服系統(tǒng)

    基于工程化參數(shù)優(yōu)化的遙測(cè)伺服系統(tǒng)
    發(fā)表于 06-30 15:57 ?6次下載

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

    了行業(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次下載
    嵌入式系統(tǒng)<b class='flag-5'>工程化</b>設(shè)計(jì)

    交叉編譯器安裝教程

    交叉編譯器中“交叉”的意思就是在一個(gè)架構(gòu)上編譯另外一個(gè)架構(gòu)的代碼,相當(dāng)于兩種架構(gòu)“交叉”起來(lái)了。Ubuntu 自帶的 gcc
    的頭像 發(fā)表于 09-29 09:12 ?3513次閱讀

    QT如何配置交叉編譯工具?

    交叉編譯工具安裝 (glibc版本需要和開(kāi)發(fā)板上的版本相兼容)
    的頭像 發(fā)表于 10-28 09:31 ?3457次閱讀

    Linux交叉編譯選項(xiàng)與源碼與目標(biāo)文件分離

    交叉編譯選項(xiàng) 編譯Linux,通常只需要運(yùn)行 make menuconfig 配置要編譯的模塊,然后運(yùn)行 make 。Linux默認(rèn)是做本地編譯
    的頭像 發(fā)表于 09-27 11:48 ?844次閱讀