我创建了一个非常简单的应用程序,可以输出一些文本。
我的开发环境是Windows + Windows的Docker。我创建了ubuntu容器,并在Windows中为ubuntu构建应用程序之后
set GOARCH=amd64
set GOOS=linux
go build -o "myapp"
然后,我将“myapp”文件复制到共享文件夹,并在容器的共享文件夹中看到它。
我尝试在容器中运行它但出现错误后

我为什么不能运行它?是构建不正确还是我尝试以某种错误的方式执行它?
在Windows中,当我运行exe文件时,我会有此输出,并且我想要在Ubuntu中也一样。
更新
如建议,我尝试./myapp,并且存在Exec格式错误
最佳答案
在ubuntu和其他Linux系统上,只有myapp
会尝试从myapp
环境变量中查找PATH
。要专门在当前目录中查找可执行文件,您需要使用:
./myapp
或使用完整路径:
/__shared/myapp
更新:为使此工作正常,您的文件需要可执行。您可以使用
ls -l
进行验证:ls -l
-rwxrwxr-x 1 user user 0 Feb 9 09:45 myapp
如果在第一列中至少看不到一个“x”,则需要运行:
chmod +x myapp
有关此主题的更多信息,请参见understanding-linux-file-permissions。
更新:错误
cannot execute binary file: Exec format error'
可能来自:uname -a
和file myapp
的输出关于ubuntu - 在Docker容器(Ubuntu)的Windows中创建的Run Go应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42131301/