英文:
Why is there no binary created when running `go get golang.org/x/tools/cmd/godoc`?
问题
godoc
和gotour
可以通过go build
从它们各自的源代码目录构建和运行。为什么在使用go get
获取gotour
时会创建一个二进制文件,而对于godoc
则不是这样呢?
命令行输出:
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> ls
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/user/.gvm/pkgsets/go1.5.1/global"
GORACE=""
GOROOT="/home/user/.gvm/gos/go1.5.1"
GOTOOLDIR="/home/user/.gvm/gos/go1.5.1/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> go get golang.org/x/tools/cmd/godoc
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> ls
pkg src
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> go get golang.org/x/tour/gotour
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> ls
bin pkg src
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> ls bin/
gotour
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> cd src/golang.org/x/tools/cmd/godoc/
[ user@pc:~/.gvm/pkgsets/go1.5.1/global/src/golang.org/x/tools/cmd/godoc ]
>> go build
[ user@pc:~/.gvm/pkgsets/go1.5.1/global/src/golang.org/x/tools/cmd/godoc ]
>> ./godoc
usage: godoc package [name ...]
godoc -http=:6060
-analysis string
comma-separated list of analyses to perform (supported: type, pointer). See http://golang.org/lib/godoc/analysis/help.html
-ex
show examples in command line mode
-goroot string
Go root directory (default "/home/user/.gvm/gos/go1.5.1")
-html
print HTML in command-line mode
-http string
HTTP service address (e.g., ':6060')
-httptest.serve string
if non-empty, httptest.NewServer serves on this address and blocks
-index
....
英文:
godoc
and gotour
can be built and run from their respecitve source directory with go build
. What is the reason a gotour
binary created when one go get
it and that is not the case for godoc
.
Command Line Output:
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> ls
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/user/.gvm/pkgsets/go1.5.1/global"
GORACE=""
GOROOT="/home/user/.gvm/gos/go1.5.1"
GOTOOLDIR="/home/user/.gvm/gos/go1.5.1/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> go get golang.org/x/tools/cmd/godoc
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> ls
pkg src
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> go get golang.org/x/tour/gotour
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> ls
bin pkg src
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> ls bin/
gotour
[ user@pc:~/.gvm/pkgsets/go1.5.1/global ]
>> cd src/golang.org/x/tools/cmd/godoc/
[ user@pc:~/.gvm/pkgsets/go1.5.1/global/src/golang.org/x/tools/cmd/godoc ]
>> go build
[ user@pc:~/.gvm/pkgsets/go1.5.1/global/src/golang.org/x/tools/cmd/godoc ]
>> ./godoc
usage: godoc package [name ...]
godoc -http=:6060
-analysis string
comma-separated list of analyses to perform (supported: type, pointer). See http://golang.org/lib/godoc/analysis/help.html
-ex
show examples in command line mode
-goroot string
Go root directory (default "/home/user/.gvm/gos/go1.5.1")
-html
print HTML in command-line mode
-http string
HTTP service address (e.g., ':6060')
-httptest.serve string
if non-empty, httptest.NewServer serves on this address and blocks
-index
....
答案1
得分: 6
Godoc是特殊的,因为它是Go发行版的官方工具之一。
因此,如果你使用go get
命令获取godoc,生成的二进制文件将不会放置在$GOPATH/bin
目录下,而是放置在$GOROOT/bin
目录下。
Gotour在这方面并不特殊,所以它会被安装在你的$GOPATH/bin
目录下。
英文:
Godoc is special as it is an official tool being part of the Go distribution.
So if you go get
godoc, the result binary will not be placed under $GOPATH/bin
where all other executables go, but under $GOROOT/bin
.
Gotour is not special in this way, so it gets installed into your $GOPATH/bin
.
答案2
得分: 5
以下是翻译好的内容:
对于那些只想在$GOPATH
下安装godoc
的人可以这样做:
-
下载,不安装:
$ go get -u -d golang.org/x/tools/cmd/godoc
-
将二进制文件构建到指定路径:
$ go build -o $GOPATH/bin/godoc golang.org/x/tools/cmd/godoc
英文:
And for those just want to install godoc
under $GOPATH
can do so:
1. Download, don't install:
$ go get -u -d golang.org/x/tools/cmd/godoc
2. Build binary to specific path:
$ go build -o $GOPATH/bin/godoc golang.org/x/tools/cmd/godoc
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论