就程序和操作系统而言,32 位 vs 64 位 vs ARM

就程序和操作系统而言,32 位 vs 64 位 vs ARM

因此,当我运行 Raspbian(基本上是带有 LXDE 的 ARM Debian 衍生版本)时,我可以使用 aptitude 安装任何普通软件包。但是,例如,如果我想下载 .deb 文件,我必须选择 32 位或 64 位并下载该文件,然后尝试在 Raspbian 上运行它(它不起作用)。

为什么从官方存储库安装软件包可以在 ARM 系统上运行?为什么不兼容呢?

我对硬件和软件位之间的区别也有点困惑。 ARM是硬件,对吧?

答案1

TL,DR:如果只提供“32 位”和“64 位”选择,则这两种选择都不适合 Raspberry Pi(或任何其他基于 ARM 的计算机)。您需要一个适用于 ARM 的软件包,以及合适的启动软件包,即armhf.

“32位”和“64位”只是处理器架构的特征之一。许多处理器系列都有 32 位和 64 位变体(x86、ARM、Sparc、PPC、MIPS 等)。德班仅针对不同处理器特性和不同软件特性就有 23 个官方二进制发行版。

您需要安装一个与ABI为您的系统。 ABI(应用程序二进制接口)包括处理器类型(更准确地说,是其指令集),还包括与程序交互方式相关的其他特征。特别是,当程序调用库中的代码时,ABI 确定如何传递库函数的参数(在寄存器中或在堆栈上)。

在 PC 世界中,有两种指令集(即使有细微的变化也没关系):

  • IA-32,一个变体x86,通常称为 i386(Debian 使用的名称)或 i686(与 IA-32 一样,是 x86 架构系列的几代);
  • x86-64,也称为 x64 或 amd64(Debian 使用的名称)(不要与完全不同的 IA-64 混淆)。

Intel 和 AMD 都生产实现 x86 和 x86-64 指令集的处理器。现代 PC 的处理器同时支持 x86-64 和 x86 指令集;较旧的 PC 的处理器仅支持 x86。由于 x86 指令集使用 32 位寄存器,而 x86-64 指令集使用 64 位寄存器,并且对于每个指令集,所有 Linux 安装都使用一个 ABI,因此这些通常被描述为“32 位” ”或“64 位”。在 PC 环境中,“32 位”表示“x86”,“64 位”表示“x86-64”。

ARM 处理器具有完全不同的指令集。您无法在 ARM 系统上安装 x86 或 x86-64 软件包。您需要一个适用于 ARM 的包,以获得正确的指令集,更普遍的是,为了获得正确的 ABI。目前还没有针对 64 位 ARM 处理器的主要 64 位发行版,因为ARMv8引入 64 位指令集的架构修订版仍然非常新且不常见。然而,存在多个 32 位 ABI,它们假定存在不同的处理器功能并使用不同版本的参数传递约定。 Linux 上使用的主要 ARM ABI 包括:

  • 阿梅尔,基于ARM EABI 版本 2(称为“ARM EABI”或简称“EABI”),在其小尾数法化身;
  • 臂氢夫,这是 armel 的一个变体,它利用了较新的 ARM CPU 的一些功能,特别是H硬件F定位点支持。

所有支持armhf的设备也支持armel;然而,给定的系统安装必须一致。 Raspbian 使用armhf(事实上,它最初是作为 Debian 的armel 到armhf 的端口,当时armhf 还是一个新事物)。

1至少对于主流发行版来说是这样。有些嵌入式发行版具有多个 x86 二进制版本,其中包含针对不同版本的标准 C 库(glibc、dietlibc、uclibc 等)编译的软件包。

答案2

因此,当我运行 Raspbian(基本上是带有 LXDE 的 ARM Debian 衍生版本)时,我可以使用 aptitude 安装任何普通软件包。

如果您运行的是 Raspbian,aptitude 会从 Raspbian 存储库获取其软件包。正如中所解释的树莓派常见问题解答,这些软件包是针对 Raspberry Pi 中使用的 ARMv6 编译的。您没有使用 Debian 官方软件包。再次来自常见问题解答,Debian臂氢夫支持 ARMv7-A CPU 及更高版本以及 Debian阿梅尔支持能力较差的 ARM CPU。

我必须选择 32 位或 64 位并下载

如果您的意思是“在 x86 和 x86_64 之间进行选择”,那么这些是针对x86架构(或更确切地说现在的 i686)或x86_64。他们不会在 手臂建筑学。您必须找到并下载为 Raspbian 编译的 .deb(或使用相同的选项),或者自己编译。

我对硬件和软件位之间的区别也有点困惑。

我不确定我是否很好地理解了这个问题,但支持 x86_64 的处理器也可以运行 32 位 x86,因此您可以在最新的 CPU 上安装发行版的 32 位版本,并在支持 x86_64 的硬件上仅使用 32 位软件。

相关内容