目录
编译器
文件扩展名与包(package)
Go 环境变量
在 Linux 上安装 Go
其他版本的安装
安装目录清单
——————————————————我是华丽的分割线——————————————————
Go 原生编译器 gc 和非原生编译器 gccgo,这两款编译器都是在类 Unix 系统下工作 。其中,gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中,你也可以通过安装 MinGW 从而在 Windows 平台下使用 gcc 编译器。这两个编译器都是以单通道的形式工作。
对于非常底层的纯 Go 语言代码或者包而言,在各个操作系统平台上的可移植性是非常强的,只需要将源码拷贝到相应平台上进行编译即可,或者可以使用交叉编译来构建目标平台的应用程序。但如果你打算使用 cgo 或者类似文件监控系统的软件,就需要根据实际情况进行相应地修改了。
Go 原生编译器 gc:主要基于 Ken Thompson 先前在 Plan 9 操作系统上使用的 C 工具链。
gccgo 编译器:相对于 gc 而言更加传统的编译器,使用 GCC 作为后端。
Go 语言源文件的扩展名很显然就是 .go
。
C 文件使用后缀名 .c
,汇编文件使用后缀名 .s
。所有的源代码文件都是通过包(packages)来组织。包含可执行代码的包文件在被压缩后使用扩展名 .a
(AR 文档)。
Go 语言的标准库包文件在被安装后就是使用这种格式的文件。
注意 当你在创建目录时,文件夹名称永远不应该包含空格,而应该使用下划线 "_" 或者其它一般符号代替。
Go 开发环境依赖于一些操作系统环境变量,你最好在安装 Go 之前就已经设置好他们。如果你使用的是 Windows 的话,你完全不用进行手动设置,Go 将被默认安装在目录 c:/go
下。这里列举几个最为重要的环境变量:
- $GOROOT 表示 Go 在你的电脑上的安装位置,它的值一般都是
$HOME/go
,当然,你也可以安装在别的地方。- $GOARCH 表示目标机器的处理器架构,它的值可以是 386、amd64 或 arm。
- $GOOS 表示目标机器的操作系统,它的值可以是 darwin、freebsd、linux 或 windows。
- $GOBIN 表示编译器和链接器的安装位置,默认是
$GOROOT/bin
,如果你使用的是 Go 1.0.3 及以后的版本,一般情况下你可以将它的值设置为空,Go 将会使用前面提到的默认值。
目标机器是指你打算运行你的 Go 应用程序的机器。
Go 编译器支持交叉编译,也就是说你可以在一台机器上构建运行在具有不同操作系统和处理器架构上运行的应用程序,也就是说编写源代码的机器可以和目标机器有完全不同的特性(操作系统与处理器架构)。
- $GOPATH 默认采用和
$GOROOT
一样的值,但从 Go 1.1 版本开始,你必须修改为其它路径。它可以包含多个 Go 语言源码文件、包文件和可执行文件的路径,而这些路径下又必须分别包含三个规定的目录:src
、pkg
和bin
,这三个目录分别用于存放源码文件、包文件和可执行文件。- $GOARM 专门针对基于 arm 架构的处理器,它的值可以是 5 或 6,默认为 6。
- $GOMAXPROCS 用于设置应用程序可使用的处理器个数与核数。
源码安装流程如下:
1. 设置环境变量:我们在 Linux 系统下一般通过文件 $HOME/.bashrc
配置自定义环境变量,根据不同的发行版也可能是文件 $HOME/.profile
,然后使用 gedit 或 vi 来编辑文件内容。
1. 添加GOROOT:
export GOROOT=$HOME/go
2. 添加到系统路径:
export PATH=$PATH:$GOROOT/bin
3. 开发Go项目时,保存工作目录:
export GOPATH=$HOME/Applications/Go
$GOPATH
可以包含多个工作目录,取决于你的个人情况。如果你设置了多个工作目录,那么当你在之后使用 go get
(远程包安装命令)时远程包将会被安装在第一个目录下。
在完成这些设置后,你需要在终端输入指令 source .bashrc
以使这些环境变量生效。然后重启终端,输入 go env
和 env
来检查环境变量是否设置正确。
2. 安装c工具
Go 的工具链是用 C 语言编写的,因此在安装 Go 之前你需要先安装相关的 C 工具。
例如Ubuntu:
sudo apt-get install bison ed gawk gcc libc6-dev make
3. 获取go源代码
也可以直接取安装版本,直接解压到 $GOROOT 目录即可,不必走后面的流程
从官方页面或国内镜像下载 Go 的源码包到你的计算机上,然后将解压后的目录 go 通过命令移动到 $GOROOT 所指向的位置。
wget https://storage.googleapis.com/golang/go
.src.tar.gz tar -zxvf go .src.tar.gz sudo mv go $GOROOT
4. 构建go
在终端使用以下指令来进行编译工作。
cd $GOROOT/src ./all.bash
编译完成后可以看到如下信息
注意事项
在测试 net/http
包时有一个测试会尝试连接 google.com
,你可能会看到如下所示的一个无厘头的错误报告:
‘make[2]: Leaving directory `/localusr/go/src/pkg/net’
如果你正在使用一个带有防火墙的机器,我建议你可以在编译过程中暂时关闭防火墙,以避免不必要的错误。
解决这个问题的另一个办法是通过设置环境变量 $DISABLE_NET_TESTS
来告诉构建工具忽略 net/http
包的相关测试:
export DISABLE_NET_TESTS=1
如果你完全不想运行包的测试,你可以直接运行 ./make.bash
来进行单纯的构建过程。
5. 测试安装
写个hello world,没啥好说的
6. 验证安装版本
终端指令:
go version
代码运行时检测:
package main import ( "fmt" "runtime" ) func main() { fmt.Printf("%s", runtime.Version()) }
7. 更新版本
不想写了,看菜鸟教程的吧,重在简单
你的 Go 安装目录($GOROOT
)的文件夹结构应该如下所示:
README.md, AUTHORS, CONTRIBUTORS, LICENSE
/bin
:包含可执行文件,如:编译器,Go 工具/doc
:包含示例程序,代码工具,本地文档等/lib
:包含文档模版/misc
:包含与支持 Go 编辑器有关的配置文件以及 cgo 的示例/os_arch
:包含标准库的包的对象文件(.a
)/src
:包含源代码构建脚本和标准库的包的完整源代码(Go 是一门开源语言)/src/cmd
:包含 Go 和 C 的编译器和命令行脚本