[英]binary file not found on doing go build -o /bin/go_docker inside a docker file
[英]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.