/proc ファイルシステムから Linux アーキテクチャをインポートする

/proc ファイルシステムから Linux アーキテクチャをインポートする

私はJavaでプログラムを作成しており、このプログラムをコンパイルするLinux用のアーキテクチャを決定する必要があります。

同様のものが必要ですuname -mが、プログラムを実行せずに/procpseduo-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)次のように定義されています。ファイルの生成 アーチを介して調整が必要な場合:

x86{,_64}:

ifeq ($(CONFIG_X86_32),y)
    ...
    UTS_MACHINE := i386
    ...
else
    ...
    UTS_MACHINE := x86_64
    ...

パワーPC: ppc{,64,64le}:

UTS_MACHINE := $(subst $(space),,$(machine-y))

s390x:

UTS_MACHINE := s390x

建築 64:

ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
...
UTS_MACHINE := aarch64_be
else
...
UTS_MACHINE := aarch64
endif

答え4

unameコマンドを試してください。

$男の名前

または

$uname -a

さようなら、

関連情報