【问题标题】:go install does not recognize "-o" flaggo install 无法识别“-o”标志
【发布时间】:2016-01-19 12:27:01
【问题描述】:

我正在尝试执行 go install 并使用 -o 标志重命名输出。

go install -o bar.exe src/foo.go

但这失败并出现错误:

flag provided but not defined: -o
usage: install [build flags] [packages]

go help build-o 显示为正确的构建标志以重命名输出二进制文件。没有提到这个标志不是为go install定义的。

go run -o bar.exe src/foo.go 失败并出现同样的错误。

go build -o bar.exe src/foo.go 有效。我得到了 bar.exe。

所以这只是文档错误,还是我遗漏了什么?

我的版本:go1.5 windows/386

谢谢。

【问题讨论】:

  • -o 标志没有为installrun 定义。文档有什么错误?
  • go help install 给出了usage: go install [build flags] [packages],因此假设这里接受为go build 定义的任何标志似乎是合理的。
  • go build -h 仅在描述 -o 和 -i 之后列出 The build flags are shared by the build, clean, get, install, list, run, and test commands:-o 不是共享构建标志之一。
  • 如果您阅读go help build 的输出:构建标志部分以The build flags are shared by the build, clean, get, install, list, run, and test commands: 开头,而-o 未在此处列出。
  • @JimB 那是我的错误。下一次,我将使用 RTFMC(C 表示紧密)

标签: go


【解决方案1】:

go build 接受 -o 标志,但 go install 不接受。

go install 将始终输出到$GOPATH/bin

如果您想为您的 gopath 安装自定义二进制名称,您可以使用 go build -o $GOPATH/bin/whatever,这将大致相当于 go install

【讨论】:

  • go build 不一样,因为它会在构建二进制文件后丢弃所有已编译的工件。通常建议支持go install
  • @JimB go build -i 会将依赖项工件保存在 pkg 文件夹中。
  • 啊,是的,忘记了。
  • @captncraig 谢谢,这很好用。我重读了go help build 并意识到-o-i 标志都在以下行上方进行了描述:The build flags are shared by the build, clean, get, install, list, run, and test commands: <list of build flags> 措辞很模糊,以至于我没有意识到前面的标志被排除在外。
【解决方案2】:

如果您只关心位置而不是二进制文件的名称,您可以伪造 -o 标志。为安装命令定​​义GOBIN

GOBIN=`readlink -f my/location` go install some/persons/go-package

警告:这不适用于交叉编译的二进制文件。

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 1970-01-01
    • 2014-09-19
    • 2023-03-14
    • 2021-05-11
    • 2011-11-06
    • 2015-08-16
    • 2016-06-08
    • 2014-07-11
    相关资源
    最近更新 更多