This commit is contained in:
Unknown
2013-04-10 03:27:59 -04:00
parent fd96ca9b11
commit baa468befb

View File

@@ -7,7 +7,7 @@ Go 语言开发团队开发了适用于以下操作系统的编译器:
- FreeBSD
- Mac OS X或者 Darwin
这里有2个版本的编译Go 原生编译器 gc 和非原生编译器 gccgo这两款编译器都是在类 Unix 系统下工作 。其中gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中。这两个编译器都是以单通道的形式工作。
目前有2个版本的编译Go 原生编译器 gc 和非原生编译器 gccgo这两款编译器都是在类 Unix 系统下工作 。其中gc 版本的编译器已经被移植到 Windows 平台上,并集成在主要发行版中,你也可以通过安装 MinGW 从而在 Windows 平台下使用 gcc 编译器。这两个编译器都是以单通道的形式工作。
你可以获取以下平台上的 Go 1.1 源码和二进制文件:
@@ -16,11 +16,11 @@ Go 语言开发团队开发了适用于以下操作系统的编译器:
- Mac OS XSnow Leopard + Lionamd64 和 386 架构
- Windows 2000+amd64 和 386 架构
对于非常底层的纯 Go 语言代码或者包而言在各个操作系统平台上的可移植性是非常强的只需要将源码拷贝到相应平台上进行编译即可或者可以使用交叉编译来构建目标平台的应用程序第2.2节)。但如果你打算用 cgo 或者类似文件监控系统的软件,就需要根据实际情况进行相应地修改了。
对于非常底层的纯 Go 语言代码或者包而言在各个操作系统平台上的可移植性是非常强的只需要将源码拷贝到相应平台上进行编译即可或者可以使用交叉编译来构建目标平台的应用程序第2.2节)。但如果你打算使用 cgo 或者类似文件监控系统的软件,就需要根据实际情况进行相应地修改了。
1. Go 原生编译器 gc
主要基于 Ken Thompson 先前在 Plan 9 操作系统上使用 C 工具链。
主要基于 Ken Thompson 先前在 Plan 9 操作系统上使用 C 工具链。
Go 语言的编译器和链接器都是使用 C 语言编写并产生本地代码Go 不存在自我引导之类的功能。因此如果使用一个有不同指令集的编译器来构建 Go 程序就需要针对操作系统和处理器架构32 位操作系统或 64 位操作系统)进行区别对待。
@@ -58,7 +58,7 @@ Go 语言开发团队开发了适用于以下操作系统的编译器:
从 Go 1.0.3 版本开始,不再使用 8g8l 之类的指令进行程序的构建,取而代之的是统一的 `go build``go install` 等命令,而这些指令会自动调用相关的编译器或链接器。
更深层次的信息你可以在目录 `$GOROOT/src/cmd` 下找到编译器和链接器的源代码。Go 语言本身是由 C 语言开发的,而不是 Go 语言。词法分析程序是 GNU bison语法分析程序是名为 `$GOROOT/src/cmd/gc/go.y` 的 yacc 文件,它会在同一目录输出 `y.tab.{c,h}` 文件。如果你想知道更多有关构建过程的信息,你可以查看相同目录下的 Makefile 文件,另一个构建过程的概述可以在 `$GOROOT/src/make.bash` 中找到。
如果你想获得更深层次的信息你可以在目录 `$GOROOT/src/cmd` 下找到编译器和链接器的源代码。Go 语言本身是由 C 语言开发的,而不是 Go 语言。词法分析程序是 GNU bison语法分析程序是名为 `$GOROOT/src/cmd/gc/go.y` 的 yacc 文件,它会在同一目录输出 `y.tab.{c,h}` 文件。如果你想知道更多有关构建过程的信息,你可以查看相同目录下的 Makefile 文件,另一个版本的构建过程的概述可以在 `$GOROOT/src/make.bash` 中找到。
大部分的目录都包含了名为 `doc.go` 的文件,这个文件提供了更多详细的信息。