我正在尝试调解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
哪个可以正常工作并继续构建其他应用程序。我的问题是,为什么这些目标变量在此阶段相关?那不是仅与此程序正在编译的应用程序相关吗?
答案 0 :(得分:4)
Go编译器和链接器是Go程序。 make.bash
需要知道要为其构建Go工具链的体系结构和操作系统。
有关不同体系结构和操作系统的示例,请参见Downloads - The Go Programming Language。