我没有这个配置,所以想向您了解一下。
如果您在 64 位硬件(例如 Core 2 Duo、i3、i5、i7)上有一个 32 位 Linux 内核,那么您会得到uname -i
和uname -m
的哪些输出uname -p
?请在此处粘贴此内容。
三者中哪一个可以果断地告诉我我的内核类型?
我计划从此或getconf LONG_BIT
bash 脚本中获取输出,并确定是使用 CMake 仅为 32 位还是为 32 位和 64 位构建我的程序。
我没有这个配置,所以想向您了解一下。
如果您在 64 位硬件(例如 Core 2 Duo、i3、i5、i7)上有一个 32 位 Linux 内核,那么您会得到uname -i
和uname -m
的哪些输出uname -p
?请在此处粘贴此内容。
三者中哪一个可以果断地告诉我我的内核类型?
我计划从此或getconf LONG_BIT
bash 脚本中获取输出,并确定是使用 CMake 仅为 32 位还是为 32 位和 64 位构建我的程序。
我觉得你的想法有问题。
我有一台 CPU 是 Intel(R) Core(TM)2 Duo CPU 的 PC,所以硬件肯定支持 64 位,但我安装的是 32 位 Linux 系统(RedHat Enterprise Linux Server 5.4,Tikanga)。以下是 uname -i、uname -m、uname -p 的输出:
[root@build-server-for-9K proc]# uname -i
i386
[root@build-server-for-9K proc]# uname -m
i686
[root@build-server-for-9K proc]# uname -p
i686
[root@build-server-for-9K proc]# getconf LONG_BIT
32
所有输出显示 Linux 内核构建为 32 位。输出不显示硬件功能。
所以我认为“getconf”和“uname”都不能给你指导是构建32位内核还是64位内核。
但是 /proc/cpuinfo 可以为您提供有关 CPU 硬件能力的信息,例如是否支持 64 位。
获得硬件能力后,您可以决定只构建 32 位或 32 位和 64 位内核。
希望上面的解释能给你一些帮助。
我还附上了“cat /proc/cpuinfo”的部分结果:
model name : Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx smx est tm2 cx16 xtpr lahf_lm