Compiler construction 如何为Go构建8g和6g Go编译器

Compiler construction 如何为Go构建8g和6g Go编译器,compiler-construction,build,x86,go,x86-64,Compiler Construction,Build,X86,Go,X86 64,我正在编写的软件将广泛部署在x86和x86-64体系结构上的Windows、Mac和Linux系统中。每当我在Mac和Linux系统上设置go编译器时,我只构建了6g。在Windows上,我只使用预构建的实验二进制文件,它使用8g 当我开始设置构建服务器时,我假设我还需要构建8g,这样我也可以生成32位构建。如何设置8g,特别是在Mac上(因为它们可以是x86或x64,具体取决于它们的使用年限)?您必须将环境变量GOARCH设置为386,而不是all.bash构建脚本可能自动选择amd64。有关

我正在编写的软件将广泛部署在x86和x86-64体系结构上的Windows、Mac和Linux系统中。每当我在Mac和Linux系统上设置go编译器时,我只构建了6g。在Windows上,我只使用预构建的实验二进制文件,它使用8g


当我开始设置构建服务器时,我假设我还需要构建8g,这样我也可以生成32位构建。如何设置8g,特别是在Mac上(因为它们可以是x86或x64,具体取决于它们的使用年限)?

您必须将环境变量
GOARCH
设置为
386
,而不是
all.bash
构建脚本可能自动选择
amd64
。有关详细信息,请参阅in-Go文档。

正如另一张海报所说,使用
GOARCH
。他没有说的是你不需要多个目录

运行
all.bash
两次,相同的
GOROOT

GOARCH=amd64 ./all.bash
GOARCH=386 ./all.bash
当您使用
gomake
构建某些内容时,如果默认设置不适合您,请设置
GOARCH

GOARCH=386 gomake
不幸的是,
goinstall
还不尊重
GOARCH

请注意,gc编译器始终是交叉编译的。一旦您拥有了所需体系结构的编译器,设置
GOOS
并在
$GOROOT/src/pkg
中构建包,那么您应该能够构建针对任何操作系统或体系结构的软件

GOARCH=386 GOOS=windows gomake

那么,如果您希望同时构建/安装32位和64位二进制文件,该怎么办?在单独的目录中构建它们,并在构建之间更改变量???我想那会有用的。听起来是编写脚本的好机会。太好了,那么像gofix、gofmt这样的“helper”命令会发生什么呢?他们是用我最后一次使用的球门建造的吗?因此,如果我在x64机器上开发,我可能希望先构建386,然后切换到amd64,这样我就有了两个编译器,但我的工具都是64位的。是的,每次都会构建辅助工具,因此它们将具有GOARCH架构,如果需要64位辅助工具,可能需要先构建386,然后再构建amd64。请注意,这个答案已经过时了。不再有
gomake
goinstall
go build
go install
处理
GOOS
GOARCH
很好,不需要多个目录(除了
go install
将为您创建的目录)。