x86 和 x64 二进制文件有什么区别,我们想下载适用于 Windows 7、Ubuntu 12.04 的二进制文件(32 位选项)
10 回答
x86 用于 32 位操作系统,x64 用于 64 位操作系统
不同之处在于 Java 二进制文件分别编译为 x86(32 位)或 x64(64 位)应用程序。
在 64 位 Windows 上,您可以使用任一版本,因为 x86 将在 WOW64 模式下运行。在 32 位 Windows 上,您显然应该只使用 x86。
对于 Linux,您应该为 32 位操作系统选择适当的类型 x86,为 64 位操作系统选择 x64。
x86 是 32 位指令集,x86_64 是 64 位指令集……区别在于简单的架构。如果是 Windows 操作系统,您最好使用 x86/32 位版本来解决兼容性问题。在 Linux 的情况下,如果操作系统没有长模式标志,您将无法使用 64 位软件。
无论我推荐什么,如果你有一个 Windows 7 32 位操作系统,然后选择 32 位或 x86 二进制文件,对于 Ubuntu 12.04 使用命令uname -a
或grep lm /proc/cpuinfo
(grep lm /proc/cpuinfo
不返回 32 位的值,因为 32 位操作系统没有 cpuinfo 标志)了解架构操作系统你的操作系统然后根据你的操作系统使用二进制文件。
** 笔记。请记住,只要支持增强的 64 位,您始终可以在 32 位系统中安装 64 位操作系统。64 位操作系统有时更适合多用途工作,并且还支持比 32 位更多的内存。您也可以在 64 位操作系统中安装 32 位软件。
** 操作系统 = 操作系统。
x86
- x86 是 32 位指令。
- 32 位处理器不能安装 64 位版本的操作系统。
- 它源于英特尔 8086 处理器
- 只有 4GB 的可寻址内存限制。
- 它只能访问 2 个核心。
- 不太灵活和不太安全
- 虚拟内存量较少
- X86 应用程序与 x86 和 x64 系统兼容。
- X86 具有英特尔使用的架构接口,需要使用更多寄存器来拆分和存储值。
x64
- x64 是 64 位指令。
- 许多 32 位程序与 64 位处理器和操作系统一起工作。
- 它是 AMD 对 x86 的扩展
- 最大 8TB(截至 2018 年)。
- 它允许计算机访问多达 8 到 12 个内核。
- 高效且安全。
- 虚拟内存量更大。
- 为 x64 编译仅在 64 位操作系统中具有速度优势。
- X64 具有 AMD 使用的架构接口。
- 值大于可存储的值。
x86是基于 Intel 8086 CPU 及其 Intel 8088 变体的向后兼容指令集架构系列。
指令集架构 (ISA)是计算机的抽象模型。它也被称为架构或计算机架构。
ISA 的实现称为实现。ISA 允许在性能、物理尺寸和货币成本(除其他外)方面可能不同的多种实现;因为 ISA 充当软件和硬件之间的接口。
为 ISA 编写的软件可以在同一 ISA 的不同实现上运行(Exp:32 位或 64 位)。这使得不同代计算机之间的二进制兼容性很容易实现,以及计算机家族的发展。
这两项发展都有助于降低计算机的成本并提高其适用性。由于这些原因,ISA 是当今计算中最重要的抽象之一。
如果您下载 Java 开发工具包 (JDK),则会有所不同,因为它包含不同架构的本地库:
- x86 适用于 32 位操作系统
- x64 适用于 64 位操作系统
此外,您可以在 64 位操作系统上使用 32 位 JDK(x86)。但是您不能在 32 位操作系统上使用 64 位 JDK。
同时,您可以在任何 JVM 上运行已编译的 Java 类。不管是 32 位还是 64 位。
在内存使用方面,x86 被限制在大约 3 / 3,5 Gb,而 x64 可以在 4 Gb 及更多的情况下正常工作。
此外,对于 Windows,x86 将在 X86 和 x64 处理器上运行,而 x64 只需要 x64 处理器。
奇怪的是,这是英特尔的事情,而不是微软的事情。X86 指的是 Intel CPU 系列从 8086 到 80486。 Pentium 系列仍然使用相同的寻址系统。x64 指的是英特尔后来为 64 位 CPU 推出的 I64 寻址系统。所以 Windows 只是遵循英特尔的架构命名。
x64 是英特尔和 AMD 的 32 位 x86 指令集架构 (ISA) 的 64 位扩展的通用名称。AMD 推出了 x64 的第一个版本,最初称为 x86-64,后来更名为 AMD64。英特尔将他们的实现命名为 IA-32e,然后是 EMT64。
“使用 C# 编程时,您通常不需要担心底层目标平台。然而,在少数情况下,应用程序和操作系统架构会影响程序逻辑、更改功能并导致意外异常。”
“通常的误解是,选择特定目标会导致编译器生成特定于平台的代码。事实并非如此,而是它只是在程序集的 CLR 标头中设置一个标志。可以使用 Microsoft 的CoreFlags 工具"
https://medium.com/@trapdoorlabs/c-target-platforms-x64-vs-x86-vs-anycpu-5f0c3be6c9e2