Go 交叉编译

来源:互联网 发布:swoole 源码 编辑:程序博客网 时间:2024/06/16 10:22

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗吃了巧克力该怎么办 孩子零食吃多了怎么办 上学时月经侧漏怎么办 漏电被电的脚肿怎么办 走路有尿溢出来怎么办 篮球气嘴漏气了怎么办 暗线插座盒坏了怎么办 焊过电焊眼睛疼怎么办 烧电焊后眼睛痛怎么办? 焊完电焊眼睛疼怎么办 烧电焊后眼睛痛怎么办 用电焊后眼睛痛怎么办 看电焊后眼睛痛怎么办 眼睛焊电焊很痛怎么办 电焊没带眼睛痛怎么办 有东西进眼睛了怎么办 眼睛有东西磨眼怎么办 怀孕了眼睛肿疼怎么办 眼睛疼又红血丝怎么办 用眼过度眼睛疼怎么办 眼睛玩手机视力下降怎么办 看手机眼睛疼该怎么办 眼睛眨一下就痛怎么办 着火了怎么办教案详案 汽车尾灯磕破了怎么办 后尾灯灯罩裂了怎么办 七氟丙烷喷伤了怎么办 冒险岛2fps低怎么办 虐杀原形2很卡怎么办 玩虐杀原形2卡怎么办 虐杀原形2闪退怎么办 电脑显示不出u盘怎么办 电脑不显示u盘怎么办 u盘在电脑不显示怎么办 笔记本不识别u盘怎么办 u盘突然识别不了怎么办 xp电脑读不出u盘怎么办 电脑无法读取u盘怎么办 win7电脑不读u盘怎么办 电脑识别不出u盘怎么办 u盘电脑读不出来怎么办