2013-03-12 68 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