Golang在Mac、Linux、Windows下怎样交叉编译

  介绍

这篇文章给大家分享的是有关Golang在Mac、Linux、Windows下怎样交叉编译的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Golang支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好,用这里备忘一下。

Mac下编译Linux和Windows 64位可执行程序

CGO_ENABLED=0,美好=linux  GOARCH=amd64  go  build  main.go   CGO_ENABLED=0,美好=windows  GOARCH=amd64  go  build 主要。去

Linux下编译Mac和Windows 64位可执行程序

CGO_ENABLED=0,美好=darwin  GOARCH=amd64  go  build  main.go   CGO_ENABLED=0,美好=windows  GOARCH=amd64  go  build 主要。去

Windows下编译Mac和Linux 64位可执行程序

SET  CGO_ENABLED=0   SET 美好的=达尔文   SET  GOARCH=amd64   go  build  main.go      SET  CGO_ENABLED=0   linux SET 美好的=SET  GOARCH=amd64   go  build 主要。去 <李>

美好:目标平台的操作系统(达尔文、freebsd、linux、windows)

<李>

GOARCH:目标平台的体系架构(386年,amd64,手臂)

交叉编译不支持CGO所以要禁用它

上面的命令编译64位可执行程序,你当然应该也会使用386编译32位可执行程序

在网络上的诸多教程中可能会看到下面的编译命令

CGO_ENABLED=0,美好=linux  GOARCH=amd64  go  build  hello.go

其中CGO_ENABLED=0的意思是使用C语言版本的去编译器,参数配置为0的时候就关闭C语言版本的编译器了。自从golang1.5以后就去使用去语言编译器进行编译了。在golang1.9当中没有使用CGO_ENABLED参数发现依然可以正常编译。当然使用了也可以正常编译。比如把CGO_ENABLED参数设置成1,即在编译的过程当中使用CGO编译器,我发现依然是可以正常编译的。

实际上如果在去当中使用了C的库,比如进口“C"默认使用去构建的时候就会启动CGO编译器,当然我们可以使用CGO_ENABLED=0来控制去构建是否使用CGO编译器。

很多博客都提到要先增加对其它平台的支持,但是我跳过那一步,上面所列的命令也都能成功,且得到我想要的结果,可见那一步应该是非必须的,或是我所使用的版去本已默认支持所有平台。

感谢各位的阅读!关于“Golang在Mac、linux、windows下怎样交叉编译”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

Golang在Mac、Linux、Windows下怎样交叉编译