mac 下编译其他平台的执行文件方式请参看这篇文章,http://www.cnblogs.com/ghj1976/archive/2013/04/19/3030703.html 

本篇文章是win下的跨平台编译。

安装GCC编译器(MinGW)

我们需要GCC编译环境,这里我选择的是:MinGW。

mac 下安装了Xcode自动就带了GCC,win下没有,所以我们用MinGW这个最小化安装的GCC。

MinGW官网提供了一种自动在线下载安装的gui小程序,http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/ 。这个程序只需要简单的一步步跟着提示,就会自动下载每个组件的最新版本并且安装在电脑里面。

安装完成后,需要把gcc放在PATH全局参数下,这样才能被直接使用

我这里安装在  C:\MinGW\bin  目录下。

 

MinGW全称Minimalist GNU For Windows,是个精简的Windows平台C/C++、ADA及Fortran编译器,相比Cygwin而言,体积要小很多,使用较为方便。MinGW提供了一套完整的开源编译工具集,以适合Windows平台应用开发,且不依赖任何第三方C运行时库。

MinGW包括:
一套集成编译器,包括C、C++、ADA语言和Fortran语言编译器
用于生成Windows二进制文件的GNU工具的(编译器、链接器和档案管理器)
用于Windows平台安装和部署MinGW和MSYS的命令行安装器(mingw-get)
用于命令行安装器的GUI打包器(mingw-get-inst)

参考资料:

http://www.metsky.com/archives/588.html

 

编译本机系统go编译环境

在Go的安装目录的src目录下,执行脚本: all.bat

执行结果类似如下:省略了部分信息。

crypto/sha1
crypto/hmac
strconv
os
math/rand
crypto/sha256
os/user
runtime/cgo
runtime/debug
runtime/race
net/rpc/jsonrpc
testing
testing/iotest
testing/quick

# Testing packages.
ok      cmd/api 1.328s
?       cmd/cgo [no test files]
ok      cmd/fix 1.674s
ok      cmd/go  2.560s
?       cmd/godoc       [no test files]
ok      cmd/gofmt       0.570s

ok      unicode 0.254s
ok      unicode/utf16   0.147s
ok      unicode/utf8    0.190s
?       unsafe  [no test files]

# runtime -cpu=1,2,4
ok      runtime 47.297s

# sync -cpu=10
ok      sync    0.831s

# ..\misc\dashboard\builder ..\misc\goplay

# ..\test\bench\go1
ok      _/C_/Go/test/bench/go1  3.727s

# ..\misc\cgo\life

# ..\misc\cgo\stdio

# ..\misc\cgo\test
ok      _/C_/Go/misc/cgo/test   3.024s

# ..\misc\cgo\testso

# ..\doc\progs

# ..\test

# Checking API compatibility.
Go version is "go1.1.1", ignoring -next ..\api\next.txt
~pkg net, func ListenUnixgram(string, *UnixAddr) (*UDPConn, error)
~pkg syscall (darwin-386), func Fchflags(string, int) error
~pkg syscall (darwin-386-cgo), func Fchflags(string, int) error
~pkg syscall (darwin-amd64), func Fchflags(string, int) error
~pkg syscall (darwin-amd64-cgo), func Fchflags(string, int) error
~pkg syscall (freebsd-386), func Fchflags(string, int) error
~pkg syscall (freebsd-amd64), func Fchflags(string, int) error
~pkg text/template/parse, type DotNode bool
~pkg text/template/parse, type Node interface { Copy, String, Type }

ALL TESTS PASSED

---
Installed Go for windows/386 in C:\Go
Installed commands in C:\Go\bin

C:\Go\src>

生成各平台的标准命令工具和库

在命令行,依次执行,或者把下面放在一个bat文件中,一起执行:

# build linux amd64
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0

注意,

小心空格, 上面环境变量设置最后都是不应该有空格的,否则会报类似: go tool dist: unknown $GOOS linux 的错误,

如果需要准备那个平台,那个架构的编译器和连接器,修改对应参数即可。

注意,这里一定要 make.bat --no-clean

执行的结果类似如下:

pkg/regexp
pkg/go/token
pkg/go/scanner
pkg/go/ast
pkg/go/parser
pkg/os/exec
pkg/os/signal
pkg/net/url
pkg/text/template/parse
pkg/text/template
pkg/go/doc
pkg/go/build
cmd/go
pkg/runtime (linux/amd64)
移动了         1 个文件。

# Building tools for local system. windows/386
runtime
errors
sync/atomic
unicode

os/user
runtime/debug
testing
net/rpc/jsonrpc
testing/iotest
testing/quick

# Building packages and commands.
runtime
errors
sync/atomic
unicode

net/mail
net/rpc
net/smtp
os/user
runtime/debug
net/rpc/jsonrpc
testing
testing/iotest
testing/quick

---
Installed Go for linux/amd64 in C:\Go
Installed commands in C:\Go\bin

C:\Go\src>

 

交叉编译命令

在命令行,依次执行,或者把下面放在一个bat文件中,一起执行,即完成对应平台的编译:

set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
go build

 

参考资料:

Cross compile for darwin from windows
https://groups.google.com/forum/#!topic/golang-nuts/IBJt_HkHJIw

64位WIN7中golang交叉编译环境 (这篇文章不能看,误导了我很久)
https://github.com/xgene/study/blob/master/README.md

Windows下利用MinGW配置GCC纯净编译环境的简单方法
http://www.cnblogs.com/apollius/archive/2012/11/21/2781069.html

win下 golang 跨平台编译的更多相关文章

  1. Windows下MinGW跨平台编译和使用log4cpp

    Log4cpp 是C++开源日志库,为 C++ 应用程序开发中提供了日志的追踪和调试功能,基于 LGPL 开源协议,移植自 java 的日志项目 log4j, 并在 api 上保持了一致性. 1. 环 ...

  2. golang 跨平台编译——go 在windows上编译Linux平台的程序(Cross Compilation from Windows to Linux/Ubuntu)

    Go Cross Compilation from Windows to Linux/Ubuntu I have GO 1.7 installed on my Windows 10. I create ...

  3. golang跨平台编译

    // 目标平台linux 64 SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build //目标平台windows SET CGO_ENA ...

  4. php WIN下编译注意问题

    下载VC2012,安装打开CMD 须运行 vcvars32.bat (初始化VC编译环境) 下载PHP WIN编译包:http://windows.php.net/downloads/php-sdk/ ...

  5. 在Windows/Ubuntu下安装OpenGL环境(GLUT/freeglut)与跨平台编译(mingw/g++)

    GLUT/freeglut 是什么? OpenGL 和它们有什么关系? OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用.如果需要在程序里直接使用OpenGL, ...

  6. win8.1下golang+sdl2.0环境搭建

    sdl2.0的golang绑定我是使用的这个,但是它的官方介绍里面只有linux以及OSX系统的说明,没有windows的,在我的mbp上弄好以后就考虑在win下也搭建一个开发环境,这样就能比较方便的 ...

  7. linux下golang的配置

    linux下golang的配置 之前开发golang一直在windows下,今天在linux下试了一下 ,遇到一些梗,比如go 找不到 sync包.花了一小时全部解决,把过程记录一下. 安装 go 我 ...

  8. linux下golang

    linux下golang的配置 linux下golang的配置 之前开发golang一直在windows下,今天在linux下试了一下 ,遇到一些梗,比如go 找不到 sync包.花了一小时全部解决, ...

  9. Win下安装Cygwin中的SSH服务

    windows和linux各有其优越性,可以安装在同一台电脑上,但切换要重启.同时拥有两台电脑,一台装win,一台装linux,自然非常好,但具备此条件的不多.本文介绍cygwin,它可以让你在win ...

随机推荐

  1. 对所有CPU寄存器的简述(16位CPU14个,32位CPU16个)

    32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES.CS.SS.DS.FS和GS)1 ...

  2. QTableWidget使用简单,因为不再存在父节点的关系

    虽然使用比较简单,但亲自过一遍还是有必要的,权当一个学习笔记吧,记录在此. #include "tablewidgetxxx.h" #include <QtGui/QAppl ...

  3. Linux服务器沦陷为肉鸡的全过程实录

    1 从防火墙瘫痪说起 2015年3月10日,还没到公司就被电话告知办公室无法正常连接互联网了,网速非常慢,无法正常浏览网页.急急忙忙感到公司,开始查找问题. 首先排除了交换机故障,因为内部局域网正常. ...

  4. POJ2126——Prime Path(BFS)

    Prime Path DescriptionThe ministers of the cabinet were quite upset by the message from the Chief of ...

  5. RMI、Hessian、Burlap、Httpinvoker、WebService的比较

    RMI.Hessian.Burlap.Httpinvoker.WebService的比较 2(转)     [2]Java远程调用方法性能比较 [IT168技术]现在,Java远程调用方法很多,各种方 ...

  6. opencv 人脸识别 (二)训练和识别

    上一篇中我们对训练数据做了一些预处理,检测出人脸并保存在\pic\color\x文件夹下(x=1,2,3,...类别号),本文做训练和识别.为了识别,首先将人脸训练数据 转为灰度.对齐.归一化,再放入 ...

  7. emacs 快捷键笔记

    C-d C-aM-aC-eM-e===复制黏贴M-d    kill-wordM-del     backward-kill-wordM-k     kill-sentenceC-x del back ...

  8. Lantern免费使用教程【转】

    转自:http://www.mfbuluo.com/13710.html 自从谷歌去年退出中国后,可能是意识到中国市场的潜力,所说这款Lantern免费的软件,背后有谷歌的资助,这一点部落无法肯定. ...

  9. [CFgym101061C]Ramzi(贪心,双条件最短路)

    题目链接:http://codeforces.com/gym/101061/problem/C 题意:一张图,图上的边有两种,一种是车道,一种是人行道.一个人要从A点到B点,可以坐车也可以走人行道.这 ...

  10. RabbitMQ用户角色及权限控制

    RabbitMQ的用户角色分类:none.management.policymaker.monitoring.administrator RabbitMQ各类角色描述:none不能访问 managem ...