我有一台同时具有 glibc i686 和 x86_64 的机器,并且有一个非常烦人的 glibc 问题。
一台计算机上安装两个同名的库正常吗?我如何知道执行的是哪个库?
直到最近,我还认为 x86_64 就是 i686。好吧,我一定是弄错了,但为什么呢?
[root@machin ~]# 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.
[root@machin ~]# 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.
答案1
从技术上来说,i686 实际上是一个 32 位指令集(x86 系列的一部分),而 x86_64 是一个 64 位指令集(也称为 amd64)。
从表面上看,您拥有一台具有 32 位库以实现向后兼容的 64 位计算机。那应该完全没问题。
答案2
i686软件包旨在在 686 兼容处理器上执行,其中包括所有 Intel 32 位 x86 处理器奔腾4等以及 AMD 的处理器(AMD K6)和其他制造兼容 32 位芯片的供应商。
了解更多信息:
x86_64软件包旨在在与 AMD64 64 位平台兼容的处理器上执行,包括 AMD Athlon 64、AMD Opteron 和相关 AMD 处理器系列,以及英特尔64位基于处理器。
这些 64 位处理器完全向后兼容其 32 位前代处理器,因此,如果您有 AMD64 或 Intel 64 处理器,则由您决定是安装 64 位 x86_64 软件包还是 32 位 i686 软件包。为了获得系统的最高性能,您可能需要使用 64 位 x86_64 分发包。
参考 :
答案3
如果你在维基百科中挖掘 i686,维基百科会告诉你 i686 微架构被视为 x86 扩展的线索。
一般来说,所有 x86 架构都被认为是相似的,x86_64(或者可能是 amd64)架构被认为属于另一个微架构组。
答案4
回答您的问题:x86_64 与 i686 不同,但是 x86_64“包含”i686 功能。
i686 是指基于 32 位架构的 CPU 设计(参见https://en.wikipedia.org/wiki/32-bit_computing)
x86_64 是指基于 64 位架构的 CPU 设计(请参阅https://en.wikipedia.org/wiki/64-bit_computing)
本质上,i686 是 x86_64 的 32 位组件,代表 x86_64 名称的 x86 部分。 x86_64 是一种 64 位 CPU 架构,为了“向后兼容”而“包含”32 位功能。 (看https://en.wikipedia.org/wiki/X86-64)
回顾Intel CPU的历史,很容易追踪i686等名称的起源。
大多数“个人计算机”(PC) 中当前 CPU 的前身 CPU 起源于第一个 Intel CPU 4004。在 20 世纪 70 年代有不同的型号,然后出现了 8086、8088、80186、80286、 80386、80486、80586(又名奔腾)等(参见:https://en.wikipedia.org/wiki/List_of_Intel_microprocessors)
这些是英特尔为其 CPU 分配的名称。 x86中的x代表1、2、3等。
这是了解 i686 是什么以及它来自哪里的好方法,在 Wikipedia 上搜索以下项目;
i286,重定向到 80286 i386,重定向到 80386 i486,重定向到 80486 i586,重定向到 P5 / Pentium,Intel 此时停止使用 ix86 引用(请参阅此处了解原因:https://en.wikipedia.org/wiki/Pentium)i686,重定向到 P6 / Pentium Pro(该系列中最后一个主要的 32 位 CPU 设计,有点忽略 Pentium M 和其他一些) i786 以及其他链接提供 Intel Itanium CPU / P7 作为链接(该系列中的第一个 64 位 Intel CPU)