jus*_*ing 4 cpu kernel architecture multiarch
内核架构和操作系统架构有什么区别?当试图找出要为哪种架构编译二进制文件时,其中哪一个是相关的?
据我所知,尽管在某些发行版中使用 32 位操作系统,但仍可以安装 64 位内核。
打印什么uname -i
,内核架构还是操作系统架构?dpkg --print-architecture
和呢arch
?
内核架构为kernel\xe2\x80\x99s\xe2\x80\x9cpreferred\xe2\x80\x9d架构;uname -m
it\xe2\x80\x99s和给出的体系结构arch
(它们是等效的)。例如,在 64 位 x86 兼容 CPU 上运行的 64 位内核上,该文件将为x86_64
.
在某些平台上,内核可以运行多种体系结构的二进制文件;例如,64 位 x86 内核还可以运行 32 位二进制文件(具有两个 ABI:\xe2\x80\x9cold\xe2\x80\x9d i386
/ i686
ABI 和x32
)。它通过指示 CPU 在运行此类二进制文件时以 32 位模式运行,并提供 32 位系统调用与其本机 64 位系统调用之间的转换来支持这一点。通过QEMU添加用户态模拟,内核还可以为 QEMU 支持的任何架构运行二进制文件:例如,armhf
在 64 位 Intel CPU 上。除了二进制文件本身以及所需的任何转换层之外,您\xe2\x80\x99还需要适当的库,与二进制文件具有相同的架构;这就是多架构所提供的帮助,在多架构之前,/lib32
//lib64
分工。(如果您认为处理两个或三个 ABI 很麻烦,请看一下 MIPS 系统......)
在这种情况下,\xe2\x80\x9合作系统架构\xe2\x80\x9d可能意味着很多事情:它可能是安装系统时使用的架构,或者系统中大多数二进制文件使用的架构等在 Debian 衍生产品上,它\xe2\x80\x99 是已安装软件包的体系结构dpkg
,如 给出的dpkg --print-architecture
。
当您\xe2\x80\x99构建二进制文件时,最简单的目标架构是编译器\xe2\x80\x99的默认目标架构,假设您\xe2\x80\x99也有适当的库。通常,这将是操作系统架构,无论这意味着什么。内核架构\xe2\x80\x99t在这里特别重要。在 Debian 衍生品上,多架构的扩展涵盖了交叉编译,这意味着在任何 Debian 系统上为任何受支持的 Debian 架构构建二进制文件变得更加容易;但这\xe2\x80\x99是一个相当具体的用例,仍然需要对交叉编译约束有一定程度的熟悉。所以坚持使用默认架构......
\n\nuname -i
当打印任何内容时,打印内核架构的变体;uname -p -i 未知会告诉您更多相关信息。
归档时间: |
|
查看次数: |
1444 次 |
最近记录: |