go install令——编译并安装

11个月前 (04-26)
go install 令的功能和前面一节《go build令》中介绍的 go build 令类似,附加参数绝大多数都可以与 go build 通用。go install 只是将编译的中间文件放在 GOPATH 的 pkg 目录下,以及固定地将编译结果放在 GOPATH 的 bin 目录下。

这个令在内部实际上分成了两步操作:步是生成结果文件(可执行文件或者 .a 包),第二步会把编译好的结果移到 $GOPATH/pkg 或者 $GOPATH/bin。

本小节需要用到的代码位置是./src/chapter11/goinstall

本套教程所有源码下载地址:https://pan.baidu.com/s/1ORFVTOLEYYqDhRzeq0zIiQ    提取密码:hfyf

使用 go install 来执行代码,参考下面的 shell:

$ export GOPATH=/home/davy/golangbook/code

$ go install chapter11/goinstall

编译完成后的目录结构如下:

.

├── bin

│ └── goinstall

├── pkg

│ └── linux_amd64

│ └── chapter11

│ └── goinstall

│ └── mypkg.a

└── src

└── chapter11

├── gobuild

│ ├── lib.go

│ └── main.go

└── goinstall

├── main.go

└── mypkg

└── mypkg.go

go install 的编译过程有如下规律:

  • go install 是建立在 GOPATH 上的,无法在独立的目录里使用 go install。

  • GOPATH 下的 bin 目录放置的是使用 go install 生成的可执行文件,可执行文件的名称来自于编译时的包名。

  • go install 输出目录始终为 GOPATH 下的 bin 目录,无法使用-o附加参数进行自定义。
  • GOPATH 下的 pkg 目录放置的是编译期间的中间文件。