SHW Asked: 2018-07-24 21:48:30 +0800 CST2018-07-24 21:48:30 +0800 CST 2018-07-24 21:48:30 +0800 CST Multilib 和 Multiarch 772 Multilib 和 Multiarch:这两个术语只是同义词吗?如果不是,它们有何不同? 如果我想在同一个系统中运行 32 位和 64 位应用程序,那么我应该将其称为Multiarch 还是 Multilib ? multiarch 1 个回答 Voted Best Answer Stephen Kitt 2018-07-24T22:34:38+08:002018-07-24T22:34:38+08:00 它们是针对相同一般问题的不同方法,具有不同的范围:运行为不同架构构建的二进制文件。 当你得到一个二进制文件来运行时,你需要三样东西:它需要的库(如果有的话,包括它的动态加载器),对它进行的系统调用的支持,以及解释它包含的机器指令的能力。Multilib 和 multiarch 解决了第一个问题。 Multilib 使用每个架构的已知变体表。这最初解决了 ABI 变体,例如在 MIPS 上,但现在它最常见的用途是 x86 上的 32 位支持:它通常定义lib32为 32 位库目录(并且此定义是特定于 x86 的)。因此,multilib 设置可能会/lib在/lib32. 在编译器端,您指定-m32使用 multilib 构建 32 位二进制文件。 Multiarch 更通用:它的定义不依赖于主机架构。所有库都可以在lib与其目标架构对应的子目录中找到;/usr/lib/x86_64-linux-gnu/, /usr/lib/i386-linux-gnu, 等等。在编译器方面,您使用适当的交叉编译器。 您使用哪种方法来运行 32 位二进制文件取决于发行版。Debian 及其衍生产品现在使用 multiarch,其他发行版使用 multilib。
它们是针对相同一般问题的不同方法,具有不同的范围:运行为不同架构构建的二进制文件。
当你得到一个二进制文件来运行时,你需要三样东西:它需要的库(如果有的话,包括它的动态加载器),对它进行的系统调用的支持,以及解释它包含的机器指令的能力。Multilib 和 multiarch 解决了第一个问题。
Multilib 使用每个架构的已知变体表。这最初解决了 ABI 变体,例如在 MIPS 上,但现在它最常见的用途是 x86 上的 32 位支持:它通常定义
lib32
为 32 位库目录(并且此定义是特定于 x86 的)。因此,multilib 设置可能会/lib
在/lib32
. 在编译器端,您指定-m32
使用 multilib 构建 32 位二进制文件。Multiarch 更通用:它的定义不依赖于主机架构。所有库都可以在
lib
与其目标架构对应的子目录中找到;/usr/lib/x86_64-linux-gnu/
,/usr/lib/i386-linux-gnu
, 等等。在编译器方面,您使用适当的交叉编译器。您使用哪种方法来运行 32 位二进制文件取决于发行版。Debian 及其衍生产品现在使用 multiarch,其他发行版使用 multilib。