我创建了一个非常简单的应用程序,可以输出一些文本。

我的开发环境是Windows + Windows的Docker。我创建了ubuntu容器,并在Windows中为ubuntu构建应用程序之后

set GOARCH=amd64
set GOOS=linux
go build -o "myapp"

然后,我将“myapp”文件复制到共享文件夹,并在容器的共享文件夹中看到它。
我尝试在容器中运行它但出现错误后

ubuntu - 在Docker容器(Ubuntu)的Windows中创建的Run Go应用程序-LMLPHP

我为什么不能运行它?是构建不正确还是我尝试以某种错误的方式执行它?

在Windows中,当我运行exe文件时,我会有此输出,并且我想要在Ubuntu中也一样。

ubuntu - 在Docker容器(Ubuntu)的Windows中创建的Run Go应用程序-LMLPHP

更新
如建议,我尝试./myapp,并且存在Exec格式错误

ubuntu - 在Docker容器(Ubuntu)的Windows中创建的Run Go应用程序-LMLPHP

最佳答案

在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'可能来自:
  • 系统架构和文件不匹配->确保您的ubuntu机器是64位版本,并比较uname -afile myapp的输出
  • 根据this thread
  • ,在VM的共享文件夹(带有Windows主机)中运行文件会引起麻烦->尝试将myapp复制到共享文件夹
  • 之外

    关于ubuntu - 在Docker容器(Ubuntu)的Windows中创建的Run Go应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42131301/

    10-14 15:47
    查看更多