What is the difference between i686 and x86_64 packages?

I have a machine with both glibc i686 and x86_64, and a very annoying problem with glibc.

Is it normal to have two libraries of the same name installed on one computer? How can I know which library is executed?

Until recently, I believed that x86_64 was i686. Well, I must be mistaken but why?

    [<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1d6f7272695d707c7e757473">[email protected]</a> ~]# yum info glibc
    Loaded plugins: rhnplugin, security
    This system is not registered with RHN.
    RHN support will be disabled.
    Excluding Packages in global exclude list
    Finished
    Installed Packages
    Name       : glibc
    Arch       : i686
    Version    : 2.5
    Release    : 42
    Size       : 12 M
    Repo       : installed
    Summary    : The GNU libc libraries.
    License    : LGPL
    Description: The glibc package contains standard libraries which are used by
               : multiple programs on the system. In order to save disk space and
               : memory, as well as to make upgrading easier, common system code is
               : kept in one place and shared between programs. This particular package
               : contains the most important sets of shared libraries: the standard C
               : library and the standard math library. Without these two libraries, a
               : Linux system will not function.

    Name       : glibc
    Arch       : x86_64
    Version    : 2.5
    Release    : 42
    Size       : 11 M
    Repo       : installed
    Summary    : The GNU libc libraries.
    License    : LGPL
    Description: The glibc package contains standard libraries which are used by
               : multiple programs on the system. In order to save disk space and
               : memory, as well as to make upgrading easier, common system code is
               : kept in one place and shared between programs. This particular package
               : contains the most important sets of shared libraries: the standard C
               : library and the standard math library. Without these two libraries, a
               : Linux system will not function.

    [<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0b7964647f4b666a68636265">[email protected]</a> ~]# yum info glibc-common
    Loaded plugins: rhnplugin, security
    This system is not registered with RHN.
    RHN support will be disabled.
    Excluding Packages in global exclude list
    Finished
    Installed Packages
    Name       : glibc-common
    Arch       : x86_64
    Version    : 2.5
    Release    : 42
    Size       : 64 M
    Repo       : installed
    Summary    : Common binaries and locale data for glibc
    License    : LGPL
    Description: The glibc-common package includes common binaries for the GNU libc
               : libraries, as well as national language (locale) support.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Technically, i686 is actually a 32-bit instruction set (part of the x86 family line), while x86_64 is a 64-bit instruction set (also referred to as amd64).

From the sound of it, you have a 64-bit machine that has 32-bit libraries for backwards compatibility. That should be totally fine.

Method 2

i686 packages are intended to be executed on 686-compatible processors, which includes all Intel 32-bit x86 processors up to and including the Pentium 4, etc. as well as processors
from AMD (AMD K6) and other vendors which make compatible 32-bit chips.

For more information:

x86_64 packages are intended to be executed on processors which are
compatible with the AMD64 64-bit platform, including the AMD Athlon 64,
AMD Opteron and related AMD processor families, and the Intel 64 based
processors.

These 64-bit processors are fully backward compatible with their 32-bit
predecessors, so if you have a AMD64 or Intel 64
processor, it’s up to you whether to install the 64-bit x86_64 packages or the 32-bit i686 packages. To get the highest level of performance out of your system you may want to use the 64-bit x86_64 distribution packages.

Reference :

Method 3

If you dig i686 in Wikipedia, Wikipedia will tell you clues that the i686 microarchitecture is considered as a x86 extension.

In general all x86 architectures are considered similar, and the x86_64 (or maybe amd64) architecture is considered in another microarchitectures group.

Method 4

In answer to your question: x86_64 is not the same as i686, however x86_64 “includes” i686 capability.

i686 refers to a CPU design that is based on a 32 bit architecture (see https://en.wikipedia.org/wiki/32-bit_computing)

x86_64 refers to a CPU design that is based on a 64 bit architecture (see https://en.wikipedia.org/wiki/64-bit_computing)

Essentially i686 is the 32-bit component of x86_64 and represents the x86 part of the x86_64 name. x86_64 is a 64 bit CPU architecture that “includes” 32 bit capability for the sake of “backwards compatibility”. (see https://en.wikipedia.org/wiki/X86-64)

Looking at the history of Intel CPUs, it’s fairly easy to trace the origins of names like i686.

The CPUs that are the predecessors of the current CPUs in most “Personal Computers” (PCs) has its origins with the first Intel CPU, the 4004. There were different models in the 1970s, then came the 8086, 8088, 80186, 80286, 80386, 80486, 80586 (AKA Pentium), etc. (See: https://en.wikipedia.org/wiki/List_of_Intel_microprocessors)

Those are names Intel assigned to their CPUs. The x in x86 represents 1, 2, 3, etc.

Here’s a good way to see what an i686 is and where it came from, on Wikipedia, search for the following items;

i286, redirects to 80286
i386, redirects to 80386
i486, redirects to 80486
i586, redirects to P5 / Pentium, Intel stopped using the ix86 references at this point, (see here for why: https://en.wikipedia.org/wiki/Pentium)
i686, redirects to the P6 / Pentium Pro (the last major 32 bit only CPU design in this lineage, sort of, ignoring the Pentium M, and a couple of others)
i786, among other links offers the Intel Itanium CPU / P7 as a link (the first 64 bit Intel CPU in this lineage)


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x