检测所有 Linux 架构的最佳方法?

检测所有 Linux 架构的最佳方法?

我需要在 bash 脚本中检测当前 Linux 的体系结构。我看到有时 uname 会提供信息,但很棘手。这取决于系统是否将其显示在一个地方或另一个地方,甚至不显示在 uname 命令上。

在基于 Debian 的系统上,我看到了该dpkg --print-architecture命令,但仅适用于基于 Debian 的系统。

我需要检查是否是 i386、amd64、armhf、armel、arm64 或其他。

有没有一个可以在所有 Linux 系统上运行的“通用”工具?我需要当前安装的内核架构...而不是我的硬件能够支持的

答案1

GNU 核心工具附带archuname -m命令来打印内核编译的体系结构。

dpkg --print-architecture如果您想了解可以在系统上安装哪些架构的二进制文件,这是正确的工具(应用程序二进制接口,ABI)。请注意,在所谓的多架构具有多个架构的系统。示例:Debian PC 可能在 64 位 CPU 上运行 64 位内核和混合 32/64 位软件。如果您想要利用 64 位的优势,同时能够执行 32 位旧应用程序,这会很有用。 Debian 和派生发行版在这方面非常强大,不确定其他发行版是否提供类似的功能。

如果您正在寻找一种可移植的方法来找出 chroot 环境或容器内使用的体系结构(如 ABI 中),您可以检查编译系统文件之一的体系结构,例如

$ file -Lb /usr/bin/ld | cut -d, -f2
 x86-64

答案2

有很多可能性;uname -m是一个,又/proc/cpuinfo是另一个。getconf还有很多可以解析的配置信息。也许看看 LSB(Linux 标准库)中是否有东西?

相关内容