Wil*_*mKF 13 linux 64-bit shell command-line 32-bit
我可以运行以编程方式返回 32 或 64 以指示处理器是 32 位还是 64 位处理器的 Linux 命令是什么?
Gil*_*il' 14
可以看到是否CPU为64位,32位,或通过检查能够两者的flags一致/proc/cpuinfo。您必须知道架构系列中可能存在的标志。例如,在 i386/amd64 平台上,该lm标志标识支持 amd64 的 CPU(没有该标志的 CPU 仅支持 i386)。
grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo # Assuming a PC
Run Code Online (Sandbox Code Playgroud)您可以通过查询架构来查看内核是 32 位还是 64 位uname -m。例如,i[3456]86是 32 位x86_64而是 64 位。请注意,在多种架构上,64 位内核可以运行 32 位用户态程序,因此即使uname -m显示 64 位内核,也不能保证 64 位库可用。
[ "$(uname -m)" = "x86_64" ] # Assuming a PC
Run Code Online (Sandbox Code Playgroud)
另请注意,这uname -m可能会返回“虚拟化”值。例如,在 Linux 下,如果您setarch i386 bash在 amd64 系统上运行,并uname -m从该 bash运行,您将看到uname -m报告i386. 即使内核是 64 位系统,这也可以有效地让您假装在“32 位系统”上,例如编译 32 位程序而不设置交叉编译。
您可以通过使用命令查询LSB支持来查看用户空间中可用的内容lsb_release。更准确地说,lsb_release -s打印:支持的 LSB 功能的分隔列表。每个特征都有形式。例如,ix86 C 库的可用性由 表示,而是 amd64 的模拟。不过,并非每个发行版都声明了所有可用的 LSB 模块,因此可用的可能比以这种方式检测到的更多。module-version-architecturecore-2.0-ia32core-2.0-amd64
您可以通过编译一个5行C程序打印找出发展的首选字长(假设C编译器可用)sizeof(void*)或sizeof(size_t)。
| 归档时间: |
|
| 查看次数: |
14079 次 |
| 最近记录: |