我是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
有人可以帮我解决这个问题,或者给我提示吗? 如果能得到我的理由,我将很高兴。 非常感谢。
答案 0 :(得分:0)
这里有多个问题:
Linux内核不应从Linux命令行运行。应该从特权模式运行以启动操作系统。
.o文件是所谓的object files
。它们包含已编译的代码和对其他符号(其他代码)的引用,但不包含引用的代码本身。这意味着您无法运行目标文件,因为它只是一个难题。首先,您需要将所有目标文件链接在一起。当然,这是在构建Linux时完成的,结果在不久前被称为vmlinuz
,也许他们再次将其重命名。
即使您要链接ping.o,它也可能缺少入口点(main()
函数)。有一些代码,但是不知道如何运行它以及作为输入传递什么。 main
函数提供了所有这些功能。
如果您详细说明为什么,您可能会为您提供更多帮助。