首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译Linux内核后无法执行二进制文件: Exec格式错误

问编译Linux内核后无法执行二进制文件: Exec格式错误
EN

Stack Overflow用户
提问于 2018-08-23 15:08:50
回答 1查看 2.9K关注 0票数 0

我是一个新的Linux用户,对一个问题感到困惑。编译Linux内核后,我尝试运行输出文件(例如,net/ipv4 4/ping.o中的./ping.o)。然而,终端的输出显示

bash:./ping.o:无法执行二进制文件: Exec格式错误

在那之后,我用

文件ping.o

输出是

ping.o:精灵64位LSB可重新定位,x86-64,第1版( debug_info ),没有剥离

我的计算机是与文件相同的架构,即x86_64。

不名-m x86_64

有人能帮我回答这个问题吗,或者给我个提示?如果我能找到原因,我会很高兴的。非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 15:16:18

这里有许多问题:

  • Linux内核不应该从Linux命令行运行。它应该在特权模式下运行以启动操作系统。
  • .o文件被称为object files.它们包含编译后的代码和对其他符号(其他代码)的引用,但不包含引用的代码本身。这意味着您不能运行对象文件,因为它只是拼图的一部分。首先,您需要将所有对象文件链接到一起。当然,这是在构建Linux的过程中完成的,结果在一段时间前被称为vmlinuz,也许他们将它重命名了一次。
  • 即使您要链接ping.o,它也可能缺少入口点(main()函数)。有一些代码,但不知道如何运行它,也不知道作为输入应该传递什么。main函数提供了所有这些。

如果你详细说明你为什么要做你正在做的事情,我也许能帮你更多的忙。

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

https://stackoverflow.com/questions/51988943

复制
相关文章

相似问题

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