内核架构与操作系统架构

jus*_*ing 4 cpu kernel architecture multiarch

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

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

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

Ste*_*itt 6

内核架构为kernel\xe2\x80\x99s\xe2\x80\x9cpreferred\xe2\x80\x9d架构;uname -mit\xe2\x80\x99s和给出的体系结构arch(它们是等效的)。例如,在 64 位 x86 兼容 CPU 上运行的 64 位内核上,该文件将为x86_64.

\n\n

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

\n\n

在这种情况下,\xe2\x80\x9合作系统架构\xe2\x80\x9d可能意味着很多事情:它可能是安装系统时使用的架构,或者系统中大多数二进制文件使用的架构等在 Debian 衍生产品上,它\xe2\x80\x99 是已安装软件包的体系结构dpkg,如 给出的dpkg --print-architecture

\n\n

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

\n\n

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

\n