用户态Linux编译失败

用户态Linux编译失败

我试图在 64 位机器上编译用户模式 ​​Linux,但defconfig出现以下错误。

arch/x86/um/user-offsets.c:1: sorry, unimplemented: code model "large" not supported yet

知道这意味着什么吗?

答案1

根据我不稳定的理解:编译脚本正在通过-mcmodel=large海湾合作委员会的选项。仅从 GCC 4.3 开始支持此选项(或者也许是 4.4)。你似乎有一个旧版本该选项在命令行上被识别,但在幕后并未实现。

该选项生成一个可执行文件,运行在大模型,它会消耗更多的指针内存,但不会对代码和数据部分的地址和大小施加任何限制。这允许内核运行在任何虚拟地址。我认为这对于用户模式 ​​Linux 来说是必要的,因为它必须与真正的内核共存,同时它本身又假装是用户→内核 ABI 的内核。

相关内容