单独使用go install命令的场景一般是安装本地自定义包,比如修改了一个已有的第三方包,想要使用本地的版本,就可以使用go install命令
go install
//1.编译的中间文件(目标库文件)放到pkg下,xxx.a文件
//2.把编译的结构放到go的bin目录下
go install chapter11/goinstall
//当前目录是项目main.go所在目录,包名为chapter11,要安装的目录为goinstall,只有这样才能在pkg下面生成.a
//文件,否则生成不了
├── bin
│ └── goinstall
├── pkg
│ └── linux_amd64
│ └── chapter11
│ └── goinstall
│ └── mypkg.a
└── src
└── chapter11
├── gobuild
│ ├── lib.go
│ └── main.go
└── goinstall
├── main.go
└── mypkg
└── mypkg.go
go install -v -work
//在一个目录下执行安装(-v -work和go build 下的一样)
//outpu:
//WORK=/var/folders/mj/jw1zfg_x2qv70vx2y4wmb_r80000gn/T/go-build3841152502
//test/copymutex
//可见打印出了临时构建文件的目录,以go-build 为前缀的临时目录和包名
go install -v -work -a
//-a 和go build中的也一样,强制安装,这时可看到输出了很多依赖的包
//并且在在gobin 下生成了/Users/.../go/bin/copymutex
我用绝对路径执行
go install -a /Users/.../core/tools
可以在pkg目录下生成.a文件,但是没有在go bin 目录下生成二进制文件,不知道为啥
注意一定要在 gopath目录下才行