设为首页 收藏本站
查看: 1130|回复: 0

[经验分享] win下 golang 跨平台编译

[复制链接]

尚未签到

发表于 2018-9-19 12:17:05 | 显示全部楼层 |阅读模式
  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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-594255-1-1.html 上篇帖子: golang初体验 下篇帖子: Golang学习 - strings 包
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表