英文:
Run Go app created in windows in Docker container (Ubuntu)
问题
我创建了一个非常简单的应用程序,用于输出一些文本。
我的开发环境是Windows + Docker for Windows。我创建了一个Ubuntu容器,并在Windows上为Ubuntu构建了我的应用程序。
set GOARCH=amd64
set GOOS=linux
go build -o "myapp"
然后,我将'myapp'文件复制到共享文件夹中,并在容器的共享文件夹中看到它。然后我尝试在容器内运行它,但出现了错误。
为什么我不能运行它?是构建错误还是我以错误的方式执行它?
在Windows中,当我运行我的exe文件时,我希望在Ubuntu中得到类似的输出。
更新:
根据建议,我尝试运行./myapp
,但出现了"Exec format error"的错误。
英文:
I created very simple application that put to output some text.
My development environment is Windows + Docker for Windows. I created ubuntu container and after build my application in Windows for ubuntu
set GOARCH=amd64
set GOOS=linux
go build -o "myapp"
Then I copy 'myapp' file to shared folder and see it in shared folder of my container.
After I try to run it inside container but there is an error
Why can't I run it? Was it built incorrectly or do I try to execute it in some wrong way?
In windows I have this output when I run my exe file and I want something the same in Ubuntu.
UPDATE
As suggested I try ./myapp and there is Exec format error
答案1
得分: 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
有关此主题的更多信息,请参阅理解Linux文件权限。
更新:错误信息cannot execute binary file: Exec format error
可能是由以下原因引起的:
- 系统架构与文件不匹配 --> 确保您的Ubuntu机器是64位版本,并比较
uname -a
和file myapp
的输出。 - 根据此线程的说法,在虚拟机的共享文件夹中运行文件(使用Windows主机)可能会导致问题 --> 尝试将myapp复制到共享文件夹之外。
英文:
On ubuntu and other linux systems, just myapp
will try to find myapp
from the PATH
environment variable. To look specifically for an executable inside the current directory, you need to use:
./myapp
Or use the complete path:
/__shared/myapp
UPDATE: for this to work, your file need to be executable. You can verify it using ls -l
:
ls -l
-rwxrwxr-x 1 user user 0 Feb 9 09:45 myapp
If you don't see at least one 'x' in the first column, you need to run:
chmod +x myapp
See understanding-linux-file-permissions for more information on the subject.
UPDATE: the error cannot execute binary file: Exec format error'
could come from:
- a mismatch between the system architecture and the file --> ensure your ubuntu machine is a 64-bit version and compare the output of
uname -a
andfile myapp
- according to this thread, running a file inside the shared folder of the VM (with windows host) can cause trouble --> try to copy myapp outside the shared folder
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论