侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

交叉編譯 Go 程序

2022-06-22 星期三 / 0 评论 / 0 点赞 / 52 阅读 / 2243 字

前言Go 是支持交叉編譯的.即在 Ubuntu 下開發,再編譯成 Windows 下可以運行的程序,而且還可在 32 位或 64 位之間轉換.生成目標平臺的包和工具Go 提供了不同平臺和架構需要用到的

前言

Go 是支持交叉編譯的.即在 Ubuntu 下開發,再編譯成 Windows 下可以運行的程序,而且還可在 32 位或 64 位之間轉換.

生成目標平臺的包和工具

Go 提供了不同平臺和架構需要用到的包和工具, 但是安裝 Go 時默認只編譯了當前平臺所需要的包和工具.所以需要編譯目標平臺的包和工具.

#切換至 GOROOT 下的 src 目錄cd GOROOT/src#編譯生成 Windows 64 位 平臺的包和工具CGO_ENABLED=0 GOOS= windows GOARCH= amd64 ./make.bash#等待編譯結束,#在 GOROOT/bin 目錄下會生成 windows_amd64 目錄,該目錄內含該平臺相應的工具cd GOROOT/bin/windows_amd64/ && ls#在 GOROOT/pkg 目錄下會生成 windows_amd64 目錄,該目錄內含該平臺相應的包#目錄命名規則: 平臺 + "_" + 架構 cd GOROOT/pkg/windows_amd64 && ls  

批量生成所有平臺的包和工具

若想生成所有支持平臺的包和工具,一種方法是參照上一節介紹的方法分別替換GOOSGOARCH 的值依次生成.或使用 Github 上的 golang-crosscompile 工具:

#下載git clone git://github.com/davecheney/golang-crosscompile.git  #啓用source golang-crosscompile/crosscompile.bash  #編譯生成所有平臺的包和工具go-crosscompile-build-all

該工具我沒有試過進供參考. 詳細說明請訪問作者博客.

驗證

# 編譯生成目標平臺程序,以下代碼將生成 hello.exeCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build hello.go # 生成成功後將 `hello.exe ` 複製至目標平臺下即可運行.

附: 各平臺的 GOOSGOARCH 的可選值

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

參考文檔

  • An introduction to cross compilation with Go
  • 如何在32位linux下进行交叉编译?
  • 跨平台编译Go程序(交叉编译)

广告 广告

评论区