0

i tried to compile sample hello_world.c program in x86-64 machine, but i expect to execute hello_world binary into i686 machine. can somebody correct me if i was wrong, what are the subjective limitations to execute x86-64 binary into i686 Machine. from my understanding x86-64 binary will execute in 32-bit machine aswell.

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 Answers1

0

i686 packages are intended to be executed on Intel 32-bit x86 processors up to and including the Pentium 4 and others, as well as AMD K6 processors and other compatible 32-bit CPUs.

For more information see AMD K6 series and Intel i686.

x86_64 is for processors compatible with the AMD64 64-bit platform and Intel 64 based processors.

64-bit processors are fully backward compatible with 32-bit predecessors, so an AMD64 or Intel 64 processor supports both 64-bit x86_64 and 32-bit i686. But for performance you may prefer the 64-bit x86_64 distribution packages.

However, a 32-bit computer can only execute i686 packages and cannot execute x86_64 packages.

Reference : Microprocessor Types and Specifications.

harrymc
  • 498,455