[英]Cross Compiling Go
你需要做的是重建linux-amd64的库和运行时。 你可以这样做:
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
为此体系结构构建一个go包或二进制文件。 您可以按照其他体系结构和操作系统的相同说明进行操作。
作为围棋1.5,交叉编译要容易得多 。 由于运行时是用Go编写的,因此无需进行任何设置即可进行交叉编译。 你现在可以从vanilla Go安装运行GOOS=<os> GOARCH=<arch> go build
,它会起作用。
但是,有一个例外。 如果您正在使用cgo,您仍需要提前设置内容。 并且您需要通过将CGO_ENABLED
环境变量设置为1
来通知工具您要启用cgo交叉编译。 所以,准确地说:
cd
进入Go安装的src
目录(参见上面的说明)。 CGO_ENABLED=1 GOOS=<os> GOARCH=<arch> ./make.bash --no-clean
CGO_ENABLED=1 go build
以构建项目。 即使在编译时,指定CGO_ENABLED=1
也很重要。 按照上面的回答https://stackoverflow.com/a/27413148/3675575 ,我需要设置GOROOT_BOOTSTRAP
来重新编译我的GO源代码树:
GOROOT_BOOTSTRAP=/usr/lib/golang/ CGO_ENABLED=1 GOOS=linux GOARCH=386 ./make.bash --no-clean
(我使用的是Fedora 23,因此操作系统中的GOROOT_BOOTSTRAP可能会有所不同)
你必须cd %goroot%/src/,find make.bash
然后执行./make.bash
执行你的命令。 试试吧!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.