Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions 0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Go语言的1.5版本在标准命令方面有了重大变更。这倒不是说它们的用法有多大的变化,而是说它们的底层支持已经大变样了。让我们先来对比一下`$GOROOT/pkg/tool/<平台相关目录>`中的内容。以下简称此目录为Go工具目录。

**插播:**平台相关目录即以<GOOS>_<GOARCH>命名的目录,用于存放因特定平台的不同而不同的代码包归档文件或可执行文件。其中,<GOOS>代表特定平台的操作系统代号,而<GOARCH>则代表特定平台的计算架构代号。使用`go env`命令便可查看它们在你的计算机中的实际值。
**插播:** 平台相关目录即以 `<GOOS>_<GOARCH>` 命名的目录,用于存放因特定平台的不同而不同的代码包归档文件或可执行文件。其中,`<GOOS>` 代表特定平台的操作系统代号,而 `<GOARCH>` 则代表特定平台的计算架构代号。使用 `go env` 命令便可查看它们在你的计算机中的实际值。

1.4版本的Go工具目录的内容如下:

Expand All @@ -19,7 +19,7 @@ addr2line asm compile dist fix nm pack tour
api cgo cover doc link objdump pprof trace yacc
```

可以看到,1.5版本的目录内容精简了不少。这是因为Go 1.5的编译器、链接器都已经完全用Go语言重写了。而在这之前,它们都是用C语言写的,因此不得不为每类平台编写不同的程序并生成不同的文件。例如,8g、6g和5g分别是gc编译器在x86(32bit)、x86-64(64bit)和ARM计算架构的计算机上的实现程序。相比之下,用Go语言实现的好处就是,编译器和链接器都将是跨平台的了。简要来说,Go 1.5版本的目录中的文件compile即是统一后的编译器,而文件link则是统一后的链接器
可以看到,1.5版本的目录内容精简了不少。这是因为Go 1.5的编译器、链接器都已经完全用Go语言重写了。而在这之前,它们都是用C语言写的,因此不得不为每类平台编写不同的程序并生成不同的文件。例如,8g、6g和5g分别是gc编译器在x86(32bit)、x86-64(64bit)和ARM计算架构的计算机上的实现程序。相比之下,用Go语言实现的好处就是,编译器和链接器都将是跨平台的了。简要来说,Go 1.5版本的目录中的文件 compile 即是统一后的编译器,而文件 link 则是统一后的链接器

本教程并不会讲解Go语言的编译器、链接器以及其它工具是怎样被编写出来的,并只会关注于怎样用好包含它们在内的Go语言自带的命令和工具。

Expand Down