Ubuntu下搭建Golang开发环境 Golang安装及配置 Golang交叉编译 注:64位CentOS编译Linux32位程序异常

下载安装文件,当前最新版本为1.4.2,go1.4.2.linux-amd64.tar.gz 。

将安装文件解压至指定目录:

1 # sudo tar -zxvf go1.4.2.linux-amd64.tar.gz -C /usr/local/

编辑 /etc/profile 文件添加环境变量:

export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=$HOME/goproj

重新编译 /etc/profile 文件,并尝试查看GO版本:

1 # source /etc/profile
2 # go version

Golang交叉编译

新建 hello.go 文件,内容如下:

1 package main
2 
3 import (
4     "fmt"
5 )
6 
7 func main() {
8     fmt.Println("Hello Golang!")
9 }

Go安装包中只打包了相应平台下的编译工具,为实现交叉编译,需要手动生成其他平台的编译工具。下面将生成 windows 64位编译器,打开 /usr/local/go/src/ ,执行如下代码,GOOS表示目标系统类型,GOARCH说明目标系统是32位(386)或64位(amd64):

1 # sudo GOOS=windows GOARCH=amd64 ./make.bash

命令执行成功后,会在 /usr/local/go/pkg/ 下生成相应平台的编译工具。

接下来在LiteIDE中选择相应的目标平台,编译GO程序代码,结果如下:

Ubuntu下搭建Golang开发环境
Golang安装及配置
Golang交叉编译
注:64位CentOS编译Linux32位程序异常

最后附上各平台GOOS和GOARCH参考:

GOOS GOARCH OS
linux 386/amd64/arm >= Linux2.6
darwin 386/amd64 OS X (Snow Leopard + Lion)
freebsd 386/amd64 >= FreeBSD 7
windows 386/amd64 >= Windows 2000

注:64位CentOS编译Linux32位程序异常

# runtime/cgo
在包含自 /usr/include/features.h:385 的文件中,
                 从 /usr/include/errno.h:29,
                 从 /usr/local/go/src/runtime/cgo/cgo.go:46:
/usr/include/gnu/stubs.h:7:27: 错误:gnu/stubs-32.h:没有那个文件或目录

解决方法:

yum install glibc-devel.i686

  如果提示不能找到 -lgcc.s时,安装 libgcc.i686即可。