On Windows, x64 versions of the OS can run both x86 and x64 binaries.

However, x86 Windows can only run x86 binaries. Even if the underlying CPU is 64-bit capable, it cannot run x64 binaries.

Is the situation with x86 / x64 binary compatibility on Linux the same? Or is there more (or less) compatibility?


It depends on the GNU/Linux distribution in question, and whether relevant packages for 32-bit compatibility have been installed. The relevant feature is usually called "multilib". It also depends on support in the Linux kernel; it is possible to disable support for 32-bit binaries when the Linux kernel is compiled. The popular Debian and Ubuntu distributions both support 32-bit compatibility, and several distributions that previously did not have it have added it (for example, Arch).

The above, of course, relates to running 32-bit programs on top of a 64-bit kernel and 64-bit capable CPU. Linux cannot run 64-bit applications on a 32-bit kernel, even if the CPU is 64-bit capable. If the CPU is not 64-bit capable, then you obviously won't get 64-bit applications to run without emulation.

Not the answer you're looking for? Browse other questions tagged or ask your own question.