2017-02-09 224 views
0

我创建了用于输出一些文本的非常简单的应用程序。在Docker容器(Ubuntu)中的窗口中创建运行Go应用程序

我的开发环境是Windows + Docker for Windows。我创建了Ubuntu的容器和建立后我的应用程序在Windows的Ubuntu

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

然后我复制“MYAPP”文件,共享文件夹,看看它是我的容器的共享文件夹中。 后,我尝试运行它内部的容器,但有一个错误

enter image description here

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

在windows中我运行我的exe文件时有这个输出,我想在Ubuntu中有相同的东西。

enter image description here

UPDATE 作为建议我尝试./myapp并有Exec的格式错误

enter image description here

+2

你尝试复制外面的myapp? '。/ myapp' – ymonad

+0

你写了你将结果*复制到*的地方,而不是从你从哪里得到它。 build命令使用另一个目标目录,而不是install命令。 – Wolf

+0

运行构建后,我从src/myProject文件夹中取得了结果。新文件出现在那里,我将它复制到容器 – Vitalii

回答

1

在Ubuntu和其他Linux系统,只是myapp将尝试从PATH找到myapp环境变量。专门为当前目录中的可执行文件看,你需要使用:

./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有关的更多信息学科。

UPDATE:错误cannot execute binary file: Exec format error'可能来自:

  • 系统架构和文件之间的不匹配 - >确保你的Ubuntu的机器是64位版本和比较uname -afile myapp
  • 输出根据 this thread
  • ,运行虚拟机(与Windows主机)的共享文件夹中的文件可能会导致麻烦 - >尝试到共享文件夹
+1

更好,在我打电话之后,正如你所说我有'。/ myapp:无法执行二进制文件:执行格式错误':) 所以有另一个问题 – Vitalii

+0

更新了答案,告诉我,如果这可以解决您的问题。 – Derlin

+0

看来它是可执行的。 >>根@ 7dd1655ae5db:/ __共享#LS -l >>总1764 >> -rwxr-XR-X 1根根1804288 2017年2月9日的myapp – Vitalii

相关问题