go get和go install的包都安装在了哪里?

本文详细解释了Go语言中,带有和不带GOPATH环境变量时包的安装路径及行为差异,重点介绍了goget和goinstall在不同情况下的操作。GoModules的出现减少了对GOPATH的依赖,使得项目构建更易管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Go 语言的包的安装位置在很大程度上取决于你是否设置了 GOPATH 环境变量。

1. 有 GOPATH 环境变量的情况:

go get:当使用 go get 安装包时,它将包下载到 GOPATH 中的 pkg/mod 目录。在这个目录中,Go Modules 将下载和缓存所有的依赖项。如果你安装的是二进制工具,它们将被放在 GOPATH 的 bin 目录中。

例如,如果你的 GOPATH 是 /home/user/go,并且你运行 go get github.com/example/mypackage,包将被下载到 /home/user/go/pkg/mod 目录,而可执行文件(如果有的话)将被放在 /home/user/go/bin 目录。

go install:使用 go install 时,Go 会编译源代码并将生成的可执行文件安装到 GOPATH 的 bin 目录。如果你执行 go install github.com/example/mytool,该工具的可执行文件将被安装到 /home/user/go/bin。

2. 没有 GOPATH 环境变量的情况:

如果你不设置 GOPATH 环境变量,Go 1.11+ 版本会使用 Go Modules 来管理依赖。在这种情况下,包将被下载到你的项目目录中,而不是 GOPATH。

go get:包将被下载到项目目录的 pkg/mod 子目录。可执行文件不会被创建,因为 go get 主要用于获取包,而不是构建可执行文件。

go install:当使用 go install 时,Go 1.11+ 版本会构建可执行文件并将其安装到项目目录中的 bin 子目录。这个 bin 子目录会在项目目录下创建,而不是在 GOPATH 中。

需要注意的是,Go Modules 的目标是将依赖项存储在项目目录中,以减少对 GOPATH 的依赖。这有助于确保项目的构建环境是可重现的。不再需要设置全局 GOPATH 环境变量,这是 Go Modules 的一项重要改进。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值