在 x86_64 机器上实际编译的二进制文件在 i686 机器上执行有哪些限制?

在 x86_64 机器上实际编译的二进制文件在 i686 机器上执行有哪些限制?

我尝试在 x86-64 机器上编译示例 hello_world.c 程序,但我希望在 i686 机器上执行 hello_world 二进制文件。如果我错了,有人可以纠正我吗,在 i686 机器上执行 x86-64 二进制文件的主观限制是什么。据我了解,x86-64 二进制文件也可以在 32 位机器上执行。

prashad@ubuntu:~$ uname -a
Linux ubuntu 5.3.0-62-generic #56~18.04.1-Ubuntu SMP Wed Jun 24 16:17:03 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
prashad@ubuntu:~$

 
root@Docsis-Gateway:/tmp# uname -a
Linux Docsis-Gateway 4.9.199-yocto-standard #1 SMP PREEMPT Thu Aug 6 22:38:09 UTC 2020 i686 GNU/Linux


答案1

i686这些软件包适用于 Intel 32 位 x86 处理器,包括 奔腾4 以及其他人,以及 AMD K6 处理器和其他兼容的 32 位 CPU。

有关详细信息,请参阅 AMD K6系列和 英特尔i686

x86_64 适用于与 AMD64 64 位平台兼容的处理器,并且 英特尔 64 基于处理器。

64 位处理器完全向后兼容 32 位前代处理器,因此 AMD64 或 Intel 64 处理器既支持 64 位 x86_64,也支持 32 位 i686。但为了获得更好的性能,您可能更喜欢 64 位 x86_64 分发包。

但是32位计算机只能执行i686包,无法执行x86_64包。

参考 : 微处理器类型和规格

相关内容