繁体   English   中英

为什么 go build 什么都不做?

[英]Why is go build doing nothing?

我在工作中遇到了一个奇怪的问题。

我有一个项目。 在这个项目中有两个包,每个包都在自己的文件夹中。 每个文件夹都包含各种.go文件,这些文件是 package 的一部分。

在文件夹 A 中,如果我说go build -v ,我会得到它正在构建的东西的列表。

在文件夹 B 中,如果我说go build -v ,我会立即返回没有 output。

这两个文件夹只包含.go文件,并且没有容易识别的原因为什么它在一个文件夹中构建代码而在另一个文件夹中不构建任何内容。

go version返回go version go1.7.5 linux/amd64

我到底怎么弄清楚这里发生了什么?

编辑:澄清评论中提出的问题:

两个文件夹中都没有package main 在文件夹 A 中, go install$GOPATH/pkg下的适当位置生成一个.a文件。 在文件夹 B 中, go install没有。 它什么都不做,默默地失败。 这里确实出了点问题。

评论中建议的补救措施包括使用-a标志(在看似完全不相关的事情上出错)和使用-x标志。 -x标志本来应该给出极其冗长的 output,但实际上是无用的,它输出单行引用临时文件,这些临时文件在构建终止后不存在,例如WORK=/tmp/go-build026498757

您提到构建终止后临时目录消失了。

您可以使用-work标志保留这些目录。

go help build

The build flags are shared by the build, clean, get, install, list, run, and test commands:

...

    -work
            print the name of the temporary work directory and
            do not delete it when exiting.

这应该有助于提供有关正在发生和未发生的事情的更多信息和背景。

您的 gopath 中可能已经安装了最新版本。 这可能意味着您之前在该特定软件包上执行了诸如运行go install操作,并且尚未修改目录中的任何文件。

检查 Go 的pkg目录中是否有相应的*.a库,并查看其上的修改时间戳是否晚于源文件上的时间戳。

我认为 go build 的结果被你的编辑器隐藏了。(文件树)

就我而言,我使用的是 vscode。
vscode 隐藏第一个字符为 '.' 的文件
如果你移动到 src 目录并在终端中输入ls -al

我也遇到了类似的问题,不知道根本原因,但运行

go build main.go

基本上,添加文件名并尝试。

是的。 通过添加文件名,它可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM