Ubuntu 存储库中有一系列可用的库,例如lib32stdc++6
和lib32ncurses5
。您可以在 64 位系统上安装这些库,也可以安装libstdc++6:i386
和libncurses5:i386
。我很想知道这两种类型的软件包之间有什么区别。
实际的区别是什么?为什么它们都可用?在印象中这libx:i386
是新的做事方式,这种方法是否总是优于安装lib32x
变体?已经安装了几个lib32x
和几个libx:i386
库也让我怀疑是否应该通过用对应的包替换它们来切换到仅一种类型的包。
答案1
这些软件包之间的实际区别在于库的位置。使用libfoo:i386
,库最终位于多架构路径中,例如 ,/usr/lib/i386-linux-gnu
而使用 ,lib32foo:amd64
库最终位于“旧”路径中,例如/usr/lib32
。在遥远的未来,我们将摆脱所有lib32foo
软件包,但我们还没有做到这一点。目前至少lib32stdc++6
需要 进行构建,因为它构建能够支持诸如选择目标体系结构(即生成的二进制文件的体系结构)之类的开关。如果没有这些软件包, 的构建依赖项将跨越体系结构边界,而这目前尚不受支持。还有一些问题需要保留这些软件包一段时间。gcc-X.Y
gcc-X.Y-multilib
-m32
lib32foo
gcc-X.Y
lib32foo