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

时间:2018-08-23 15:08:50

标签: linux

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

  

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

之后,我使用了

  

文件ping.o

输出为

  

ping.o:可重定位的ELF 64位LSB,x86-64,版本1(SYSV),具有   debug_info,未剥离

我的计算机与文件相同,即x86_64

  

uname -m

     

x86_64

有人可以帮我解决这个问题,或者给我提示吗? 如果能得到我的理由,我将很高兴。 非常感谢。

1 个答案:

答案 0 :(得分:0)

这里有多个问题:

  • Linux内核不应从Linux命令行运行。应该从特权模式运行以启动操作系统。

  • .o文件是所谓的object files。它们包含已编译的代码和对其他符号(其他代码)的引用,但不包含引用的代码本身。这意味着您无法运行目标文件,因为它只是一个难题。首先,您需要将所有目标文件链接在一起。当然,这是在构建Linux时完成的,结果在不久前被称为vmlinuz,也许他们再次将其重命名。

  • 即使您要链接ping.o,它也可能缺少入口点(main()函数)。有一些代码,但是不知道如何运行它以及作为输入传递什么。 main函数提供了所有这些功能。

如果您详细说明为什么,您可能会为您提供更多帮助。