为了账号安全,请及时绑定邮箱和手机立即绑定

交叉编译 Go

交叉编译 Go

Go
喵喵时光机 2021-09-09 21:38:41
我正在尝试在我的 macbook 上交叉编译 Go for ubuntu linux x86_64。我已按照此处概述的说明进行操作,但在运行时go-linux-amd64 build收到以下消息go build runtime: linux/amd64 must be bootstrapped using make.bash。对此的任何帮助将不胜感激。
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

它说您需要做的是为 linux-amd64 重建库和运行时。你可以这样做:

  1. 找到你的 Go 安装的根目录(如果你不知道它在哪里,运行which go可能会有所帮助 - 二进制文件通常与其他源代码一起安装)。

  2. cd进入src目录

  3. 运行GOOS=linux GOARCH=amd64 ./make.bash --no-clean(或者GOOS=linux GOARCH=amd64 bash make.bash --no-clean如果make.bash不可执行)。这将使用指定的操作系统和架构重建库和运行时。

完成此操作后,您可以使用GOOS=linux GOARCH=amd64 go build. 对于其他体系结构和操作系统,您可以遵循相同的说明。

编辑 (08/13/15):

从 Go 1.5 开始,交叉编译容易得多。由于运行时是用 Go 编写的,因此无需进行任何设置即可交叉编译。您现在可以GOOS=<os> GOARCH=<arch> go build从 vanilla Go 安装运行,它会起作用。

但是,有一个例外。如果您使用的是 cgo,您仍然需要提前设置。并且您需要通过将CGO_ENABLED环境变量设置为1. 所以,准确地说:

  1. cd进入src你的 Go 安装目录(参见上面的说明)。

  2. 跑 CGO_ENABLED=1 GOOS=<os> GOARCH=<arch> ./make.bash --no-clean

  3. 运行CGO_ENABLED=1 go build以构建您的项目。CGO_ENABLED=1即使在编译时指定也很重要。


查看完整回答
反对 回复 2021-09-09
?
ITMISS

TA贡献1871条经验 获得超8个赞

你必须 cd %goroot%/src/,find make.bash

然后执行 ./make.bash

执行你的命令。尝试一下!


查看完整回答
反对 回复 2021-09-09
  • 3 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信