内核架构和OS架构有什么区别?在试图确定编译二进制文件的体系结构时,其中哪一个是相关的?
据我所读,尽管在某些发行版中使用了32位操作系统,但还是可以安装64位内核。
uname -i打印的是什么,内核架构还是操作系统架构?dpkg --print-architecture和arch呢?
发布于 2017-11-18 19:17:55
内核架构是内核的“首选”体系结构;它是由uname -m和arch (它们是等价的)提供的体系结构。例如,在运行在64位x86兼容的CPU上的64位内核上,将是x86_64。
在某些平台上,内核可以为多个体系结构运行二进制文件;例如,64位x86内核也可以运行32位二进制文件(有两个ABI,即“旧”i386/i686 ABI和x32)。它通过指示CPU在运行这种二进制文件时以32位模式运行,并提供32位系统调用与其本地64位系统调用之间的转换来支持这一点。通过QEMU添加用户地仿真,内核还可以为QEMU支持的任何体系结构运行二进制文件:例如,64位Intel CPU上的armhf。除了二进制文件本身,以及任何必要的转换层之外,您还需要与二进制结构相同的适当库;这就是多重弓的帮助之处,也是多重弓之前的/lib32//lib64分工。(如果你认为处理两个或三个ABI是很多的,那么看看MIPS系统.)
在这种情况下,“操作系统体系结构”可能意味着许多事情:它可以是安装系统时使用的体系结构,也可以是系统中大多数二进制文件使用的体系结构,等等。在Debian派生工具上,它是已安装的dpkg包的体系结构,正如dpkg --print-architecture给出的。
在构建二进制文件时,最容易针对的体系结构是编译器的默认目标体系结构,前提是您也拥有了适当的库。通常,这将是操作系统架构,不管这意味着什么。内核体系结构在这里并不特别重要。在Debian衍生工具上,扩展多重弓以涵盖交叉编译意味着为任何受支持的Debian体系结构(任何Debian系统)构建二进制文件变得越来越容易;但这是一个相当具体的用例,仍然需要对交叉编译约束有一个合理的熟悉程度。所以坚持默认的架构..。
当uname -i打印任何内容时,它会打印内核体系结构的一个变体;-i是未知的无名-p将告诉您更多关于这一点的信息。
https://unix.stackexchange.com/questions/405437
复制相似问题