首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker中的NodeMCU构建导致"exec格式错误“

Docker中的NodeMCU构建导致"exec格式错误“
EN

Stack Overflow用户
提问于 2018-07-04 05:31:15
回答 1查看 101关注 0票数 0

我第一次尝试在Ubuntu16.04.4LTS中构建NodeMCU Docker。我已经阅读了这里为Docker和NodeMCU标记的文章,但没有看到这个特定的错误。

"docker run hello-world“没有问题。

我已经尝试了两种形式的NodeMCU构建命令:

代码语言:javascript
复制
$ docker run --rm -ti -v `pwd`:/opt/nodemcu-firmware marcelstoer/nodemcu-build

和显式的路径变化:

代码语言:javascript
复制
$ docker run --rm -it -v /home/tim/nodemcu-firmware:/opt/nodemcu-firmware marcelstoer/nodemcu-build

在这两种情况下,我都会得到这样的错误:

代码语言:javascript
复制
standard_init_linux.go:187: exec user process caused "exec format error"

我已经在这个错误上进行了搜索,并通过most solutions are related找到了一个丢失的页面。

然而,我不确定哪个脚本需要shebang,或者为什么它在我的情况下不起作用,但在其他情况下是正确的。

还有没有人遇到过这个错误?

EN

回答 1

Stack Overflow用户

发布于 2018-07-04 08:31:20

如果没有深入的技术细节,这个错误意味着内核不能识别可执行文件的格式,因此,它不能运行这个文件。在本例中,此错误与启动容器时启动的可执行文件有关。根据docker inspect marcelstoer/nodemcu-build输出中的Cmd条目,它是一个文件/bin/sh,这是一个ELF可执行文件。

当Linux不能执行ELF二进制文件并返回这样的错误(关于文件格式)时,通常与系统架构有关。更具体地说,镜像marcelstoer/nodemcu-build包含ELF64可执行文件(即用于amd64体系结构),而您的系统不支持它(它是i386还是arm的某种风格?)。然而,运行docker run hello-world对你来说很好,因为Docker支持的所有架构都有hello-world镜像。

根据marcelstoer/nodemcu-build镜像的Dockerfile,它是由不同架构的ubuntu构建的,因此,您可以尝试在您的系统上构建marcelstoer/nodemcu-build镜像,而不是从dockerhub拉取它。

附言:关于你链接到你的问题的解决方案。这不是关于你的案例(ELF二进制),而是关于一个脚本。对于脚本,可执行格式由文件开头的换行(#!)识别,因此,脚本必须#!开头,而不是以换行符开头。这就是为什么作者得到了同样的错误:内核无法检测到这是一个脚本,因此无法启动它。不同(但相似)的原因,相同的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51163044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档