Go工具链编译期间如何使用GOARCH和GOOS?

时间:2019-01-24 22:08:31

标签: go

我正在尝试调解make.bash为什么接受GOARCH,GOOS和其他目标变量的原因,因为它也支持对所有受支持的体系结构by default进行交叉编译。我正在针对amd64 / linux进行编译,但将使用该编译器在嵌入式环境中交叉编译用于arm / linux的应用程序。 Buildroot使用以下命令构建Go

cd /builddir/build/host-go-1.10.2/src && 
    GOROOT_BOOTSTRAP=/builddir/host/lib/go-1.4.3 
    GOROOT_FINAL=/builddir/host/lib/go 
    GOROOT="/builddir/build/host-go-1.10.2" 
    GOBIN="/builddir/build/host-go-1.10.2/bin" 
    GOARCH=arm 
    GOARM=7 
    GOOS=linux 
    CC=/usr/bin/gcc 
    CXX=/usr/bin/g++ 
    GO_ASSUME_CROSSCOMPILING=1 
    CC_FOR_TARGET="/builddir/host/bin/arm-linux-gnueabihf-gcc" 
    CXX_FOR_TARGET="/builddir/host/bin/arm-linux-gnueabihf-g++" 
    CGO_ENABLED=1 
    ./make.bash

哪个可以正常工作并继续构建其他应用程序。我的问题是,为什么这些目标变量在此阶段相关?那不是仅与此程序正在编译的应用程序相关吗?

1 个答案:

答案 0 :(得分:4)

Go编译器和链接器是Go程序。 make.bash需要知道要为其构建Go工具链的体系结构和操作系统。

有关不同体系结构和操作系统的示例,请参见Downloads - The Go Programming Language

请参见Installing Go from source