我正在尝试在我的 macbook 上交叉编译 Go for ubuntu linux x86_64。我已按照此处概述的说明进行操作,但在运行时go-linux-amd64 build收到以下消息go build runtime: linux/amd64 must be bootstrapped using make.bash。对此的任何帮助将不胜感激。
喵喵时光机
浏览 181回答 3
3回答
德玛西亚99
它说您需要做的是为 linux-amd64 重建库和运行时。你可以这样做:找到你的 Go 安装的根目录(如果你不知道它在哪里,运行which go可能会有所帮助 - 二进制文件通常与其他源代码一起安装)。cd进入src目录运行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. 所以,准确地说:cd进入src你的 Go 安装目录(参见上面的说明)。跑 CGO_ENABLED=1 GOOS=<os> GOARCH=<arch> ./make.bash --no-clean运行CGO_ENABLED=1 go build以构建您的项目。CGO_ENABLED=1即使在编译时指定也很重要。