截至 14.04,Ubuntu 中 x32 ABI 实现的当前状态如何?

截至 14.04,Ubuntu 中 x32 ABI 实现的当前状态如何?

14.04 发行说明包含以下句子:

还引入了 X32 ABI 支持(带有 32 位指针的 64 位模式)。

我认为这值得进一步解释。当您使用搜索引擎查找有关“x32 ABI”的更多信息时,您可能会发现维基百科文章最好的情况下,但主要是 Phoronix 和 Slashdot,似乎不太有用。

我希望看到一些关于以下问题的深刻见解:

  • x32 ABI 目前在 14.04 中是如何实现的?
    • 它是否在 14.04 64 位中默认启用,或者是否需要任何其他步骤来设置 x32 ABI?
    • 哪些组件或哪些软件可以使用 x32 ABI?
  • 运行 x32 ABI 的机器/安装是否有实际好处?
    • 与默认的 32 位和 64 位安装相比,内存消耗如何?

理想情况下,x32 ABI 应该将两全其美的优势结合在一起:x86-64 的大部分速度改进和更低的内存消耗较旧的 64 位硬件,没有太多 RAM


编辑 2020-08-25:我最近注意到,在 Chromebook 上通过 Chrome OS Linux App Beta(Chrome OS 中运行 LXD 的特殊 VM,默认情况下运行 Debian,但可以运行 Ubuntu、Fedora、Arch Linux 和其他系统)运行 Ubuntu 时,它有一个 /libx32 文件夹。也许这个问题需要重新审阅/修改或再次提出。我会考虑的。

答案1

在 64 位安装中,您将体验到内存使用方面的巨大差异(尤其是对于 chrome、firefox、mysql 和 java 应用程序等)。

这是 64 位操作系统众所周知的副作用,无论如何 64 位还带来了一些其他优势。

这就是x32 ABI:一个内核特性,其目的正是限制这个问题。

什么是 x32 ABI:
根据这个 pdf与 64 位普通操作系统相比,它提供了巨大的内存优势(甚至增强了 40%)。

现在如果我明白了x32-ABI 需要

  • 使用 CONFIG_X86_X32=y 编译的 Linux 内核 3.4
  • Gcc 4.7
  • Binutils 2.22
  • Glibc 2.16
  • 使用 gcc -mx32 重新编译应用程序所需的所有系统库

如何尝试
新内核默认有所需的标志,因此你需要仅有的以正确的方式编译打包(这里 Gentoo 肯定规则 ;)
在 Ubuntu 上,我不确定是否有任何存储库/ppa 用于此,无论如何 Debian 和 Arch 有一些解决方案:

Debian

相关内容