brew 安装 go 的GOROOT被设置为/usr/local/Cellar/go/x.x.x/libexec,请问brew把这个变量设置在哪里

用源码编译或者下载golang.org上已经编译好的包,放置到合适的位置后,需要设置GOROOT。


但是用brew 安装 go以后,GOROOT已经被brew 设置好,无需手工设置,只需要手工设置GOPATH即可。
osx 10.11 + go1.6.2,brew 安装后GOROOT已经被设置为 /usr/local/Cellar/go/1.6.2/libexec
osx 10.11.6 + go1.7.1,brew 安装后GOROOT已经被设置为 /usr/local/Cellar/go/1.7.1/libexec


一直比较困惑brew把GOROOT设置在哪里。


望解答。

已邀请:

astaxie - 创造、获取、分享、传播和应用Go

赞同来自:

这是有两个因素来决定的,首先Go编译的时候调用的是make.bash, 而在执行这个文件的时候会去查看环境变量GOROOT_FINAL,这个就是最后GOROOT的位置,会被编译进Go的二进制里面,请看注释:https://github.com/golang/go/blob/master/src/make.bash#L10-L11


而在brew里面安装Go的时候这个变量是这样设置的:
https://github.com/Homebrew/homebrew-core/blob/master/Formula/go.rb#L54


所以当你使用brew安装的时候GOROOT实际上会根据你安装的不同版本编译不同的GO的GOROOT。

要回复问题请先登录注册