📜  启用 CONFIG_X86_X32 但不支持 binutils (1)

📅  最后修改于: 2023-12-03 15:07:30.499000             🧑  作者: Mango

启用 CONFIG_X86_X32 但不支持 binutils

当你在编译 Linux 内核时,你可能会遇到这样的问题:启用 CONFIG_X86_X32 选项时,但是编译时却提示找不到 binutils。这是因为 x32 编译时需要使用 binutils 进行链接,而平常的 32 位和 64 位编译是使用 GCC 进行链接,因此需要特别处理。

什么是 x32?

x32 是一个非常新的架构选项,它与 64 位架构不同,它将32位寄存器扩展为64位,但是指针仍然是32位,并且使用64位指令集。 它可以在更小的指令大小下实现64位性能,并消除了许多涉及64位数据类型的性能损失。

如何启用 CONFIG_X86_X32 选项

要启用 CONFIG_X86_X32 选项,你可以在内核配置中找到以下选项:

CONFIG_X86_X32=y

你还需要使用特定的编译器进行 x32 编译。建议使用 gcc 4.8 及以上版本进行编译。

解决缺少 binutils 的问题

当你启用 CONFIG_X86_X32 选项时,编译可能可能会提示找不到 binutils。解决这个问题非常简单,你只需要安装 binutils 即可:

sudo apt-get install binutils-x86-64-linux-gnu

如果你的操作系统不是 Ubuntu 或 Debian 等,你需要使用相应的包管理工具安装对应的 binutils 包。

总结

x32 是一个新的架构选项,它可以提供更好的性能,并消除了一些 64 位系统的性能损失。当你使用 CONFIG_X86_X32 选项时,需要使用特定的编译器,并安装 binutils 包,以避免在编译时出现问题。