[轉載]Golang 交叉編譯跨平臺的可執(zhí)行程序 (Mac、Linux胀茵、Windows )

Golang支持交叉編譯社露,也就是說你在32位平臺的機器上開發(fā),可以編譯生成64位平臺上的可執(zhí)行程序.mac 下可以編譯linux 下的執(zhí)行程序 又或者windows下的執(zhí)行程序
交叉編譯依賴下面幾個環(huán)境變量:
GOARCH 目標平臺(編譯后的目標平臺)的處理器架構(386琼娘、amd64峭弟、arm)GOOS 目標平臺(編譯后的目標平臺)的操作系統(tǒng)(darwin附鸽、freebsd、linux瞒瘸、windows)

各平臺的GOOS和GOARCH參考

OS ARCH OS version
linux 386 / amd64 / arm >= Linux 2.6
darwin 386 / amd64 OS X (Snow Leopard + Lion)
freebsd 386 / amd64 >= FreeBSD 7
windows 386 / amd64 >= Windows 2000

跨平臺編譯步驟:
確定當前go環(huán)境的
mac 下的 GOARCH 和 GOOS

用go env 查看

? ~ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/song/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/v6/87fb06yx7yb46b79xlnj1y_m0000gn/T/go-build215820159=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"

首先確定當前編譯環(huán)境的處理器架構,Linux mac 都可以用uname -a 來查看

? ~ uname -a
Darwin localhost 16.3.0 Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64
? ~

目標機 Linux 下 這個是跑在Docker下的鏡像

[root@74780b70d0c0 Desktop]# uname -a
Linux 74780b70d0c0 4.9.4-moby #1 SMP Wed Jan 18 17:04:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@74780b70d0c0 Desktop]#

這里可以看到這個服務器的架構是 x86_64 這個架構亦稱 amd64.
● 6g是amd64的go編譯器坷备,它生成的是.6文件。
● 386一般使用8g命令情臭,它生成的一般是.8格式的文件省撑。
● 當然還有一個5g的命令是用于arm的cpu,
同理amd64用6l俯在,386用8l,arm用5l的鏈接器

明白了上面就開始交叉編譯go的可執(zhí)行程序了

編譯對應平臺下的執(zhí)行文件
到源代碼目錄下執(zhí)行:

Mac 下編譯 Linux 和 Windows 64位可執(zhí)行程序

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Linux 下編譯 Mac 和 Windows 64位可執(zhí)行程序

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows 下編譯 Mac 和 Linux 64位可執(zhí)行程序

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go

不帶前面參數(shù)的 go build 只是編譯出開發(fā)環(huán)境適用的執(zhí)行文件竟秫。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市跷乐,隨后出現(xiàn)的幾起案子子寓,更是在濱河造成了極大的恐慌栈妆,老刑警劉巖举娩,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坎吻,死亡現(xiàn)場離奇詭異,居然都是意外死亡揪荣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門往史,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仗颈,“玉大人,你說我怎么就攤上這事椎例“ぞ觯” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵订歪,是天一觀的道長脖祈。 經(jīng)常有香客問我,道長刷晋,這世上最難降的妖魔是什么盖高? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮眼虱,結果婚禮上喻奥,老公的妹妹穿的比我還像新娘。我一直安慰自己捏悬,他們只是感情好撞蚕,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著过牙,像睡著了一般甥厦。 火紅的嫁衣襯著肌膚如雪纺铭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天刀疙,我揣著相機與錄音舶赔,去河邊找鬼。 笑死庙洼,一個胖子當著我的面吹牛顿痪,可吹牛的內容都是我干的。 我是一名探鬼主播油够,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蚁袭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了石咬?” 一聲冷哼從身側響起揩悄,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鬼悠,沒想到半個月后删性,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡焕窝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年蹬挺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片它掂。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡巴帮,死狀恐怖,靈堂內的尸體忽然破棺而出虐秋,到底是詐尸還是另有隱情榕茧,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布客给,位于F島的核電站用押,受9級特大地震影響,放射性物質發(fā)生泄漏靶剑。R本人自食惡果不足惜蜻拨,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桩引。 院中可真熱鬧官觅,春花似錦、人聲如沸阐污。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至功氨,卻和暖如春序苏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捷凄。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工忱详, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跺涤。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓匈睁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桶错。 傳聞我的和親對象是個殘疾皇子航唆,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內容