截至 14.04,Ubuntu 中 x32 ABI 实现的当前状态是什么?

Liv*_*eBT 11 64-bit kernel 14.04

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 运行 Ubuntu(Chrome OS 中运行 LXD 的特殊虚拟机,默认运行 Debian,但它可以运行 Ubuntu、Fedora、Arch Linux 等)它有一个 /libx32 文件夹。可能这个问题需要重新审查/修改或再次询问。我会考虑的。

Pos*_*aga 5

在 64 位安装中,您会遇到内存使用情况的巨大差异(特别是对于 chrome、firefox、mysql 和 java 应用程序等应用程序)。

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

它来了x32 ABI:一个内核特性,正是为了限制这个问题。

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

现在,如果我了解x32-ABI 要求

  • 使用 CONFIG_X86_X32=y 编译的 Linux Kernel 3.4
  • 海湾合作委员会 4.7
  • Binutils 2.22
  • Glibc 2.16
  • 使用 gcc -mx32 重新编译应用程序所需的所有系统库

如何尝试
默认情况下新内核具有所需的标志,因此您需要以正确方式编译的打包文件(此处为 Gentoo 确定规则;)
在 Ubuntu 上,我不确定是否有任何用于此的存储库/ppa,无论如何 Debian 和 Arch有一些解决办法:

Debian