golang初學:交叉編譯

go version go1.22.1 windows/amd64

Windows 11 + amd64

x86_64 x86_64 GNU/Linux

---

 

序章

golang 支持 跨平臺,支持的方式 是 在一個平臺 編譯其它平臺的可執行程序。

本文 介紹 Windows 11(開發主機) 上 編譯 Linux(目標主機) 上的可執行程序。

 

#go build

 

開發主機 和 目標主機 的架構相同:x86_64

 

執行

查看 go 環境變量:

> go env

set GO111MODULE=on
set GOARCH=amd64

set GOHOSTARCH=amd64
set GOHOSTOS=windows

set GOOS=windows

……

 

修改其中的 GOOS 爲 linux(全小寫),命令:

>go env -w GOOS="linux"

 

執行編譯:

>go build

編譯 成功,生成 web001 文件——Linux 可執行的。

 

 

拷貝 web001 到 目標主機(scp 命令):

scp web001 username@iporhost:/target/directory

成功拷貝過去後,web001 是 不可執行的,使用 chmod 修改權限即可:

# chmod +x web001

 

執行&測試 web001:

# nohup ./web001 &
# ps -ef | grep web
root      439426  439378  0 20:31 pts/1    00:00:00 ./web001

web001 是一個 web程序,使用 curl 測試接口,成功,不再贅述。

 

改名

將 web001 改名爲 app001,運行,成功。

 

就這麼簡單?

 

TODO 除了 amd64(x86_64)外,還支持那些架構呢?看了 go help build 命令的內容,應該還支持下面的 os+芯片架構 組合:

Supported only on

linux/amd64, freebsd/amd64, darwin/amd64, darwin/arm64, windows/amd64,
linux/ppc64le and linux/arm64 (only for 48-bit VMA).

兩個 *asn 還提到了:linux/loong64(龍芯)。

還沒用過這些參數。

 

說明,介紹 GOOS、GOARCH 的 官方文檔 今天看到過,但現在 找不到了。

 

命令小結

  • >go env -w GOOS="linux"
    >go build
    >scp web001 username@iporhost:/target/directory
  • # chmod +x web001
    # nohup ./web001 &
    # ps -ef | grep web
    # curl

 

---END---

 

本文鏈接:

https://www.cnblogs.com/luo630/p/18170501

ben發佈於博客園

參考資料

1、go build 成不同環境的方法:mac、linux、windows
php-goland@瘋狂編程愛好者
已於 2022-10-10 17:20:11 修改
https://blog.csdn.net/qq_41672878/article/details/119410602

2、Win10系統下設置Go環境變量
https://www.cnblogs.com/yunfan1024/p/13497686.html

3、

 

ben發佈於博客園

ben發佈於博客園

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章