Go 交叉编译

Go交叉编译

Go在1.5版本中改进了对交叉编译的支持,包括统一了编译器、链接器等。从版本1.5开始,对你开发的应用程序进行夸平台交叉编译就变得相当简单了。只需要设置两个环境变量就可以搞定,分别是GOOSGOARCH

环境变量

  • GOOS是你的应用程序将要运行平台的操作系统
  • GOARCH是你的应用程序将要运行平台的处理器架构。

有效的$GOOS$GOARCH组合如下:

    $GOOS		$GOARCH
    android     arm
    darwin      386
    darwin      amd64
    darwin      arm
    darwin      arm64
    dragonfly   amd64
    freebsd     386
    freebsd     amd64
    freebsd     arm
    linux       386
    linux       amd64
    linux       arm
    linux       arm64
    linux       ppc64
    linux       ppc64le
    linux       mips
    linux       mipsle
    linux       mips64
    linux       mips64le
    netbsd      386
    netbsd      amd64
    netbsd      arm
    openbsd     386
    openbsd     amd64
    openbsd     arm
    plan9       386
    plan9       amd64
    solaris     amd64
    windows     386
    windows     amd64

编译方式

如果要对应用程序进行跨平台编译,首先需要设置GOOSGOARCH两个环境变量。然后编译方式同本平台编译方式相同。

所以进行夸平台编译,为便于理解拆分开来需要执行两个步骤:

  1. 设置GOOSGOARCH两个环境变量
  2. 执行go build

示例

鉴于你可能需要编译多个平台的可执行程序,所以不建议你将GOOSGOARCH两个环境变量在bashrc之类的文件中进行设置。

分两步操作也可能有点麻烦,你可以直接在一条命令中执行。如下:

env GOOS=linux GOARCH=arm go build -v github.com/constabulary/gb/cmd/gb

你也可以进入到project的根目录下,而不用在命令行中指定需要编译的project:

env GOOS=linux GOARCH=arm go build .

默认情况下go build会生成你package(project)名相同的可执行文件。如果你想指定生成的可执行文件的名字,需要使用-o选项:

env GOOS=linux GOARCH=arm go build -o test.bin .

参考链接:

Go Optional environment variables

Cross Compile with Go 1.5

你可能感兴趣的:(Golang,编程)