私はJavaでプログラムを作成しており、このプログラムをコンパイルするLinux用のアーキテクチャを決定する必要があります。
同様のものが必要ですuname -m
が、プログラムを実行せずに/proc
pseduo-fsで必要です。
信頼できる読書資料とは何ですか?
答え1
64ビットシステムに32ビットLinuxをインストールできるため、CPU機能を確認する方が安全な方法です。 Intelおよび互換プロセッサの場合:
grep -o -w 'lm' /proc/cpuinfo
http://www.unixtutorial.org/2009/05/how-to-confirm-if-your-cpu-is-32bit-or-64bit/
あなたが探しているのは、次のフラグです:lm。 X86_FEATURE_LM、ロングモード(64ビット)サポートを示します。 CPUフラグで「lm」フラグが見つかると、64ビット対応プロセッサを探していることになります。
答え2
私が見たことは、uname
バイナリがuname()
情報を取得するためにシステムコールを実行するということです。一部のJNIを実装したい場合は、それを実行してシステムコールを実行することをお勧めします。/proc
私が見つけることができる最も価値のあるダミーファイルは/proc/sys/kernel/osrelease
私のシステムです4.2.3-300.fc23.x86_64
。これはバージョンによって異なり、Linuxのバージョンによって大きく変わる可能性があるため、必要なほど安定していない可能性があります。
答え3
uname -m
出力ラインを含むファイルがないようです。つまり、Archx86_64
が。ppc64le
/proc/cpuinfo
/proc/sys/kernel/
しかし、おそらく/proc/cpuinfo
解析(Rui F Ribeiroのxaccepted回答)よりも少し優れているのは解析です/sys/devices/system/cpu/modalias
。
$ cat /sys/devices/system/cpu/modalias # x86_64
cpu:type:x86,ven0000fam0006mod005E:feature:,0000,0001,0002,0003...
$ cat /sys/devices/system/cpu/modalias # s390x
cpu:type:z13:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000A,000B
しかし、次の質問はそれらをマッピングする方法です。
ところで、カーネルではUTS_MACHINE := $(ARCH)
次のように定義されています。ファイルの生成
アーチを介して調整が必要な場合:
ifeq ($(CONFIG_X86_32),y)
...
UTS_MACHINE := i386
...
else
...
UTS_MACHINE := x86_64
...
UTS_MACHINE := $(subst $(space),,$(machine-y))
UTS_MACHINE := s390x
ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
...
UTS_MACHINE := aarch64_be
else
...
UTS_MACHINE := aarch64
endif
答え4
unameコマンドを試してください。
$男の名前
または
$uname -a
さようなら、