内核架构与操作系统架构

内核架构与操作系统架构

内核架构和操作系统架构有什么区别?当试图找出要为哪种架构编译二进制文件时,其中哪一个是相关的?

据我所知,尽管在某些发行版中使用 32 位操作系统,但仍可以安装 64 位内核。

打印什么uname -i,内核架构还是操作系统架构?和dpkg --print-architecturearch

答案1

内核架构是内核的“首选”架构;它是由uname -m和给出的架构arch(它们是等效的)。例如,在 64 位 x86 兼容 CPU 上运行的 64 位内核上,该文件将为x86_64.

在某些平台上,内核可以运行多种体系结构的二进制文件;例如,64 位 x86 内核也可以运行 32 位二进制文​​件(具有两个 ABI,即“旧” i386/ i686ABI 和x32)。它通过指示 CPU 在运行此类二进制文件时以 32 位模式运行,并提供 32 位系统调用与其本机 64 位系统调用之间的转换来支持这一点。添加用户态仿真通过QEMU,内核还可以运行 QEMU 支持的任何架构的二进制文件:例如,armhf在 64 位 Intel CPU 上。除了二进制文件本身以及任何必要的转换层之外,您还需要适当的库,与二进制文件具有相同的架构;这就是多架构所帮助的,在多架构之前,是/lib32//lib64分工。 (如果您认为处理两个或三个 ABI 很麻烦,请看看 MIPS 系统......)

在这种情况下,“操作系统架构”可能有多种含义:它可以是安装系统时使用的架构,也可以是系统中大多数二进制文件使用的架构等。在 Debian 衍生产品上,它是已安装的dpkg软件包,由 给出dpkg --print-architecture

当您构建二进制文件时,最简单的目标架构是编译器的默认目标架构,假设您也有适当的库。通常,这将是操作系统架构,无论这意味着什么。内核架构在这里并不是特别重要。在 Debian 衍生版本上,多架构的扩展涵盖了交叉编译,这意味着在任何 Debian 系统上为任何受支持的 Debian 架构构建二进制文件变得更加容易;但这是一个相当具体的用例,仍然需要对交叉编译约束有一定程度的熟悉。所以坚持使用默认架构......

uname -i当打印任何内容时,打印内核架构的变体;uname -p -i 未知会告诉你更多相关信息。

相关内容