【问题标题】:How do you build the 8g and 6g Go compilers for Go你如何为 Go 构建 8g 和 6g Go 编译器
【发布时间】:2011-12-08 20:18:37
【问题描述】:

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

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

【问题讨论】:

    标签: compiler-construction build x86 go x86-64


    【解决方案1】:

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

    【讨论】:

    • 如果您希望同时构建/安装 32 位和 64 位二进制文​​件怎么办?在单独的目录中构建它们并在构建之间更改变量???我想那会奏效。听起来是一个脚本的好机会。
    【解决方案2】:

    正如另一位海报所说,使用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
    

    【讨论】:

    • 非常好,那么像 gofix、gofmt 这样的“帮助”命令会发生什么?他们只是用我使用的最后一个 GOARCH 构建的吗?所以如果我在 x64 机器上开发,我可能想先构建 386,然后切换到 amd64,这样我就有了两个编译器,但我的工具都是 64 位的。
    • 是的,每次都会构建辅助工具,因此它们将具有 GOARCH 架构,如果您想要 64 位辅助工具,您可能希望先构建 386,然后再构建 amd64。
    • 请注意,此答案非常已过时。没有gomakegoinstall 了。 go buildgo install 处理 GOOSGOARCH 就好了,不需要多个目录(go install 将为您创建的目录除外)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多