問題: /tmp/go-build069786374/b001/exe/a.outをコピーするLinux仮想マシンでのGolangコンパイルエラー:そのようなファイルまたはディレクトリはありません
理由: WindowsとLinux仮想マシンの共有ディレクトリが不安定です。
解決策: Linux仮想マシンを再起動し、ディレクトリを再共有してコンパイルして渡します
詳細なプロセスは次のとおりです。
今日、buildコマンドのソースファイルmain.goが生成されたときに、エラーが報告されました。
go build command-line-arguments: copying /tmp/go-build042781492/b001/exe/a.out: open main: text file busy
ビルドが完了した後、コンパイルされたファイルが以前に生成された実行可能ファイルmainで上書きされると、メインファイルが占有され、解放されておらず、上書きできないことがわかります。
メインを実行してからコードを変更したため、再構築中に問題が発生しました。論理的に言えば、仮想マシンとフォームで実行されている共有フォルダーLinuxを使用したため、この問題は発生しないはずです。以前はこのファイルシステムによって、この事故の可能性も問題です。
最初にWindowsでテストします。
package main
import (
"fmt"
"time"
)
func main() {
time.Sleep(30*time.Second)
fmt.Println("2")
}
テストするのは、実行可能ファイルが実行されているときに、コードを変更して、正常にコンパイルできるかどうかを確認し、元の実行可能ファイルを上書きすることです。
go build main.go
main.exeファイルを実行します
コードを変更しますfmt.Println( "3")
新しいウィンドウはmain.goをビルドします
コンパイルが成功したことがわかりました。エラーは報告されていません。main.exeを実行してください。
その結果、最初の出力は2、2番目の出力は3になり、正常であることがわかります。
そこで、Linuxに戻り、共有ディレクトリの外にテストコードを作成しました。共有ディレクトリは/ data / www /です。
cd /data
mkdir test
cd test
go mod init test
vi main.go
上記のテストコードを入力してください
同じテスト手順を実行すると、正常であることがわかります。この理由は、仮想マシンの共有ディレクトリが原因であると思われます。