我没有这个配置,所以我想向您了解。
如果您在64位硬件上有32位Linux内核(例如Core 2 Duo,i3,i5,i7),那么您获得uname -i
,uname -m
和uname -p
? 请在此处粘贴。
三者中的哪一个可以果断地告诉我我的内核类型?
我计划在bash脚本中获取此输出或getconf LONG_BIT
,并使用CMake确定是仅为32位还是为32位和64位构建我的程序。
答案 0 :(得分:0)
我认为你的想法有些不对劲。
我有一台PC是Intel(R)Core(TM)2 Duo CPU,因此硬件支持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