/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출력 라인을 포함하는 파일이 없는 것 같습니다 . 즉 , Arch x86_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

안녕히 가세요,

관련 정보