这最后一篇主题中,你讲学习一对新的go命令。当你做频繁的改变,go run命名是有用的快捷方式对于编译和运行一个程序,它不用产生二进制可执行。
这个主题包含两个额外的命令用于构建代码:
go build命令编译包,连同它们的依赖,但是不能安装结果;go install命令,编译并安装包;在hello2目录的命令行下,运行go build命令,编译代码称为可执行的二进制。
$ ll
total 16
drwxr-xr-x 4 lifei staff 128 8 17 23:17 ./
drwxr-xr-x 5 lifei staff 160 8 17 23:14 ../
-rw-r--r-- 1 lifei staff 148 8 17 23:43 go.mod
-rw-r--r-- 1 lifei staff 817 8 21 12:50 hello2.go
$ go build
$ ll
total 3760
drwxr-xr-x 5 lifei staff 160 8 21 16:02 ./
drwxr-xr-x 5 lifei staff 160 8 17 23:14 ../
-rw-r--r-- 1 lifei staff 148 8 17 23:43 go.mod
-rwxr-xr-x 1 lifei staff 1913936 8 21 16:02 hello2*
-rw-r--r-- 1 lifei staff 817 8 21 12:50 hello2.go
$
在hello2目录下命令行,运行新的hello2可执行文件验证代码的工作。
注意,你的结果可能不同,取决于你在测试之后是否改变了greetings.go文件。
$ ./hello2
map[lifei:Hi, lifei. Welcome! my:Great to see you, my! tw:Hail, tw! Well met! zy:Hi, zy. Welcome!]
$
你已经编译了文件成为可执行文件,因此你能运行它。但是要在当前运行它,您的提示需要位于可执行文件的目录中,或者指定可执行文件的路径。
接下来,你将安装可执行文件,以至于你能运行它不需要指定路径。
发现Go的安装路径,go 命令将安装当前包的位置。
你能查找安装路径,通过运行go list命令,正如下面的例子:
$ go list -f '{{.Target}}'
/Users/lifei/go/bin/hello2
$
意味着,二进制文件是被安装/Users/lifei/go/bin/下。在下一步需要这个安装目录。
添加Go安装目录,到你系统的shell 路径。
这种方法,你将能运行你的程序可执行文件,不需要指定可执行文件在哪。
export PATH=$PATH:/Users/lifei/go/bin
作为备选,如果你已经有一个目录像%HOME/bin在你的shell路径中,并且你不想安装你的程序到这儿,你能改变安装目的,通过设置GOBIN参数,使用go env命令。
$ go env -w GOBIN=/path/to/you/bin
一旦你更新了你的shell路径,运行go install去编译和安装包
$ go install
$
运行你的应用仅仅通过输入它的名字。为了让这更有趣,打开一个新的命令行窗口,运行hello2可执行文件名字,在任何目录。
因为,执行运行 export命令,是临时的。打开新窗口不起作用。
如果写入
/etc/profile文件,那就可以在新窗口执行了。
$ hello2
map[lifei:Hi, lifei. Welcome! my:Hi, my. Welcome! tw:Great to see you, tw! zy:Hi, zy. Welcome!]
$