2013-03-12 78 views
0

我没有这个配置,所以我想从你那里找到。uname输出显示64位硬件上的32位内核

如果你有在64位硬件的32位Linux内核(如Core 2 Duo处理器,I3,I5,I7),然后你得到了什么输出为uname -iuname -muname -p请粘贴在这里。

这三者中的哪一个可以决定性地告诉我我的内核类型?

我打算从bash脚本中获取这个或getconf LONG_BIT的输出,并使用CMake确定是仅针对32位还是针对32位和64位构建我的程序。

回答

0

我认为你的想法有问题。我有一台CPU是Intel(R)Core(TM)2 Duo CPU,所以硬件肯定支持64bit,但我安装了32位Linux系统(RedHat Enterprise Linux Server 5.4,Tikanga)。以下是UNAME -i,uname -m输出的,UNAME -p输出:

[[email protected] proc]# uname -i 
i386 
[[email protected] proc]# uname -m 
i686 
[[email protected] proc]# uname -p 
i686 
[[email protected] 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 
+0

谢谢你,但是的/ proc/cpuinfo中告诉我关于处理器的能力。如果内核,库和软件平台是64位,我只能构建64位二进制文​​件。这就是我需要找到的 - 软件平台。 CPU可以是64位,但软件平台可能是32位。我认为'getconf LONG_BIT'可能是正确的。 – ruben2020 2013-03-12 04:27:17

+0

对于Linux Kernel编译,它不依赖于外部库或特定的内核支持。内核编译只需要编译器或交叉编译器。编译32位内核或64位内核也需要正确的.config文件。对于应用程序编译,您必须检查编译器/交叉编译器编译器是否支持32位和64位编译。你可以检查sysroot是否有sysroot_32和sysroot_64,或类似的东西。 – 2013-03-12 05:31:27

+0

我不想编译内核。我想编译一个使用Qt4和sqlite3的普通C++应用程序。我可以在32位或64位Linux中进行编译。 – ruben2020 2013-03-12 05:51:17