Go跨平台编译的方法学习
从第一天开始学习Golang就知道它有一个很让人心动的特性就是跨平台编译,但一直没有去使用。最近做了一个小东西需要用到这个特性,所以在网上进行了搜索。 首先找到是国内文章是利用下载Go的源码包,将对其进行编译安装,完成后Go/src下的make.bash生成跨平台的编译器,这样在每次用时需要指定GOOS及GOARCH来进行编译,如: CGO_ENABLED=0GOOS=linuxGOARCH=amd64gobuild //编译为linux64位系统下的程序 如果需要编译windows 64 位下的程序则要再写一个命令: CGO_ENABLED=0GOOS=windowsGOARCH=amd64gobuild //编译为windows64位系统下的程序 具体介绍请看: “Golang的跨平台编译程序” 这种方法针对一次性编译、测试、学习很有用,但对于需要对多平台编译一次性处理会有一些麻烦
好吧,除了第一个有点像是一个麻烦,其它的都不是问题,主要目的是引出第二种方法,那就是利用docker进行部署编译:
sudodockerpullgolang:1.4.2cross
GOARCH="amd64"GOBIN=""GOCHAR="6"GOEXE=""GOHOSTARCH="amd64"GOHOSTOS="linux"GOOS="linux"GOPATH="/go"GORACE=""GOROOT="/usr/src/go"GOTOOLDIR="/usr/src/go/pkg/tool/linux_amd64"CC="gcc"GOGCCFLAGS="-fPIC-m64-pthread-fmessage-length=0"CXX="g++"CGO_ENABLED="1"
root@55140be4a751:/usr/src/go/bin#
其中:"$PWD",是指将当前目录挂载为docker的数据卷 第一个/go/src/myapp 表示为当前目录挂载至数据卷的名称 第二个/go/src/myapp 表示为进行shell后直接进入的工作目录
dockerrun--rm-it-v"$PWD":/usr/src/myapp-w/usr/src/myappgolang:1.3-crossbash $forGOOSinwindowslinux;do>forGOARCHin386amd64;do>gobuild-v-omyapp-$GOOS-$GOARCH //注意这里的减号间没有空格 >done>done 这里的 GOOS后windows linux指的是编译为什么平台,用到那个则输入那个,运行后输入出相应的结果: main.gomyapp-linux-386myapp-linux-amd64myapp-windows-386myapp-windows-amd64 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |