golang 交叉编译,跨平台

因为我的本地开发环境是os x 但服务器是linux,所以需要编译linux用的go程序,方法如下:

各平台的GOOS和GOARCH参考

OS ARCH OS version

linux 386 / amd64 / arm >= Linux 2.6

darwin 386 / amd64 OS X (Snow Leopard + Lion)

freebsd 386 / amd64 >= FreeBSD 7

windows 386 / amd64 >= Windows 2000

$ cd /usr/local/go/src
$ sudo CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash

这里并不是重新编译Go,因为安装Go的时候,只是编译了本地系统需要的东西;而需要跨平台交叉编译,需要在Go中增加对其他平台的支持。所以,有 ./make.bash 这么一个过程。

执行结果类似如下:

sudo CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash
Password:

Building C bootstrap tool.

cmd/dist

Building compilers and Go bootstrap tool for host, darwin/amd64.

lib9
libbio
libmach
misc/pprof
cmd/addr2line
cmd/cov
cmd/nm
cmd/objdump
cmd/pack
cmd/prof
cmd/cc
……
pkg/text/template/parse
pkg/text/template
pkg/go/doc
pkg/go/build
cmd/go
pkg/runtime (linux/amd64)

Building packages and commands for host, darwin/amd64.

runtime
errors
sync/atomic
unicode
unicode/utf8
math
sync
unicode/utf16
crypto/subtle
io
syscall
……….
net/rpc/jsonrpc
testing/iotest
testing/quick

Building packages and commands for linux/amd64.

runtime
errors
sync/atomic
unicode
unicode/utf8
math
sync
unicode/utf16
……..
testing
net/rpc/jsonrpc
testing/iotest
testing/quick


Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin

三、编译对应平台下的执行文件
到源代码目录下执行:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build sina.go

不带前面参数的 go build 只是编译出开发环境适用的执行文件。

本文来自:开源中国博客

感谢作者:tiank

查看原文:golang 交叉编译,跨平台

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。