【go秀一秀】Golang在Windows下建立交叉编译环境

pathletboy 2013-09-26 06:32:25
在安装好go后,建立交叉编译环境还需要一个重要的工具链gcc,推荐使用mingw,下载地址如下
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20120426/mingw-get-inst-20120426.exe/download
安装好后,下文假设安装在D:\MinGW下,将D:\MinGW\bin添加到系统环境变量 %PATH% 中。
假设Go安装在c:\go下面,将下面的批处理文件放置到c:\go\src下后执行。
rm -rf ../bin ../pkg
set CGO_ENABLED=0
::x86块
set GOARCH=386
set GOOS=windows
call make.bat --no-clean

set GOOS=linux
call make.bat --no-clean

set GOOS=freebsd
call make.bat --no-clean

set GOOS=darwin
call make.bat --no-clean
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::x64块
set GOARCH=amd64
set GOOS=linux
call make.bat --no-clean
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::arm块
set GOARCH=arm
set GOOS=linux
call make.bat --no-clean
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

set GOARCH=386
set GOOS=windows
go get github.com/nsf/gocode
pause


运行完毕将会产生交叉编译环境列表如下(不完全,请根据自己需要修改)
x86的windows/linux/darwin(mac os)/freebsd
x64的linux
arm的linux(android)
另外还将安装gocode用于代码提示。

最后提供一个例子用于在windows上交叉编译x86的linux可执行文件

set GOPATH=你的工程目录
set GOARCH=386
set GOOS=linux
go build
pause

将上述批处理文件放置到你的.go源文件所在目录下运行,即可产生对应平台的可执行文件。

修改GOARCH及GOOS来产生对应平台的可执行文件,可以自行完善批处理文件,做到编译、strip、upx、打包一条龙。
...全文
9803 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagacity789 2015-05-28
  • 打赏
  • 举报
回复
提示RM 不是内部命令
pathletboy 2014-03-27
  • 打赏
  • 举报
回复
引用 7 楼 rophie 的回复:
还能编译Android?
确切的说是arm-linux,要用console跑,可惜不能编译.so,不然可以用jni。
飃颻 2014-03-27
  • 打赏
  • 举报
回复
引用 3 楼 longyubo007 的回复:
今天按照这个方法我在windows上成功编译出了linux下的可执行文件,放到linux里面跑一切正常,感谢楼主!
linux版本有内核参数的要求,并不是所有GO语言版本都能成功安装于linux操作系统的。
rophie 2014-03-27
  • 打赏
  • 举报
回复
还能编译Android?
pathletboy 2014-03-26
  • 打赏
  • 举报
回复
引用 4 楼 easykoo 的回复:
为什么我一跑 就提示 Killed.
完整的错误信息发下?猜测是你MINGW没配置好。
easykoo 2014-03-26
  • 打赏
  • 举报
回复
为什么我一跑 就提示 Killed.
三大小龙 2014-02-23
  • 打赏
  • 举报
回复
今天按照这个方法我在windows上成功编译出了linux下的可执行文件,放到linux里面跑一切正常,感谢楼主!
teemai 2013-12-28
  • 打赏
  • 举报
回复
jmloveme 2013-11-05
  • 打赏
  • 举报
回复
好东西收藏啦

2,190

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧