【Golang】Windows與Linux交叉編譯
大家好 我是寸鐵??
總結(jié)了一篇【golang】Windows與Linux交叉編譯的文章?
喜歡的小伙伴可以點(diǎn)點(diǎn)關(guān)注 ??
問(wèn)題背景
今天寸鐵想將Windows
中的程序部到Linux
下跑,我們知道在從Windows
與Linux
下要進(jìn)行交叉編譯,通常是在Windows
中打包成一個(gè)文件在再Linux
下編譯執(zhí)行,我們管這個(gè)過(guò)程叫做操作系統(tǒng)的交叉編譯。
那交叉編譯具體怎么做呢?其實(shí)很簡(jiǎn)單,不過(guò)網(wǎng)上的博客的一些命令筆者實(shí)操過(guò),發(fā)現(xiàn)不對(duì)!
小伙伴們要想實(shí)現(xiàn)交叉編譯,看筆者的文章即可,減少大量踩坑的時(shí)間。
往期好文
上一篇優(yōu)質(zhì)長(zhǎng)文,也是與打包程序相關(guān)的,感興趣的朋友可以了解一下!
【Golang】Golang使用embed加載、打包靜態(tài)資源文件
感謝社區(qū)的收錄 ?? ?? ??
工具
在正式進(jìn)入交叉編譯之前,我們先來(lái)介紹一下打包成可執(zhí)行文件的工具go build
。go build
常用于打包成一個(gè)可執(zhí)行文件,不同的操作系統(tǒng)可執(zhí)行文件的格式不同。
如Windows
操作系統(tǒng),該文件為exe
文件。
如Linux
操作系統(tǒng),該文件為sh
文件。
使用命令如下:
go build xx.go
注意:直接在
windows
環(huán)境中使用上述命令,得到的是exe
文件,不能在Linux
上運(yùn)行,在Linux
上運(yùn)行的是sh
腳本文件?。?!
交叉編譯
在簡(jiǎn)單了解了工具的使用命令后,如果我是在
Windows
環(huán)境,怎么打包成一個(gè)sh
文件,使得他可以在linux
下運(yùn)行呢?
Windows配置
使用如下配置命令:
go env -w GOOS=linux
再使用go build
命令,打包你編寫(xiě)的go
文件。
go build redisTest.go
之后就會(huì)在文件夾的位置看到這個(gè)圖標(biāo),代表打包成功!
注意:這里如果打包后為
redisTest.exe
說(shuō)明打包成Linux
的可執(zhí)行文件失敗,要檢查你的配置命令是不是正確,建議直接就是復(fù)制過(guò)去,再修改一下文件名即可,不會(huì)出錯(cuò)。
打包成linux
文件后,記得要切換為Windows
環(huán)境,確保其他文件正常編譯,使用如下命令:
go env -w GOOS=windows
Linux使用
在Linux
操作系統(tǒng)中使用上面命令打包好的sh
文件
先把文件上傳到你的文件目錄中,再使用命令如下:
./文件名
如我這里是運(yùn)行searchConsul
就是直接./searchConsul
即可。
這樣就能愉快的在
Linux
跑go
編寫(xiě)的程序啦!
看到這里的小伙伴,恭喜你又掌握了一個(gè)技能??
希望大家能取得勝利,堅(jiān)持就是勝利??
我是寸鐵!我們下期再見(jiàn)??
往期好文??
保姆級(jí)教程
【保姆級(jí)教程】Windows11下go-zero的etcd安裝與初步使用
【保姆級(jí)教程】Windows11安裝go-zero代碼生成工具goctl、protoc、go-zero
【Go-Zero】手把手帶你在goland中創(chuàng)建api文件并設(shè)置高亮
報(bào)錯(cuò)解決
【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 報(bào)錯(cuò)解決方案及api路由注意事項(xiàng)
【Go-Zero】Error: only one service expected goctl一鍵轉(zhuǎn)換生成rpc服務(wù)錯(cuò)誤解決方案
【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):報(bào)錯(cuò)解決方案
【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)報(bào)錯(cuò)解決方案
【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“報(bào)錯(cuò)解決方案
【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘報(bào)錯(cuò)解決方案
【Go-Zero】Windows啟動(dòng)rpc服務(wù)報(bào)錯(cuò)panic:context deadline exceeded解決方案
Go面試向
【Go面試向】defer與time.sleep初探
【Go面試向】defer與return的執(zhí)行順序初探
【Go面試向】Go程序的執(zhí)行順序
【Go面試向】rune和byte類型的認(rèn)識(shí)與使用文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-845374.html
【Go面試向】實(shí)現(xiàn)map穩(wěn)定的有序遍歷的方式文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-845374.html
到了這里,關(guān)于【Golang】Windows與Linux交叉編譯保姆級(jí)教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!