프로세서가 32 비트 또는 64 비트 프로세서인지를 나타 내기 위해 프로그래밍 방식으로 32 또는 64를 반환하기 위해 실행할 수있는 Linux 명령은 무엇입니까?
답변
-
에서 라인을 확인하여 CPU 가 64 비트인지, 32 비트인지 또는 둘 다 가능한지 확인할 수 있습니다 . 아키텍처 제품군에서 가능한 플래그를 알아야합니다. 예를 들어, i386 / amd64 플랫폼에서이 플래그는 amd64 가능 CPU를 식별합니다 (해당 플래그가없는 CPU는 i386 전용).
flags
/proc/cpuinfo
lm
grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo # Assuming a PC
-
로 아키텍처를 쿼리하여 커널이 32 비트인지 64 비트인지 확인할 수 있습니다
uname -m
. 예를 들어i[3456]86
32 비트이지만x86_64
64 비트입니다. 여러 아키텍처에서 64 비트 커널은 32 비트 사용자 프로그램을 실행할 수 있으므로uname -m
64 비트 커널 이 표시 되더라도 64 비트 라이브러리를 사용할 수 있다는 보장은 없습니다.[ "$(uname -m)" = "x86_64" ] # Assuming a PC
또한
uname -m
“가상화 된”값을 반환 할 수도 있습니다. 예를 들어 Linux의 경우setarch i386 bash
amd64 시스템에서 실행uname -m
하고 해당 bash에서 실행 하는 경우uname -m
보고가 표시i386
됩니다. 이렇게하면 커널이 64 비트 커널 인 경우에도 예를 들어 크로스 컴파일을 설정하지 않고 32 비트 프로그램을 컴파일하는 것처럼 “32 비트 시스템”인 것처럼 가장 할 수 있습니다. -
명령으로 LSB 지원을 조회하여 사용자 영역에서 사용 가능한 항목을 확인할 수 있습니다
lsb_release
. 보다 정확하게 는 지원되는 LSB 기능lsb_release -s
의:
분리 된 목록을 인쇄 합니다. 각 기능의 형식은 입니다. 예를 들어, ix86에 C 라이브러리의 가용성에 의해 표시되는 동안, AMD64위한 아날로그이다. 모든 배포판이 사용 가능한 모든 LSB 모듈을 선언하는 것은 아니므로 이런 방식으로 감지 가능한 것보다 더 많은 것을 사용할 수 있습니다.module-version-architecture
core-2.0-ia32
core-2.0-amd64
-
당신은 5 선 C 프로그램이 인쇄 컴파일하여 개발을위한 기본 단어 크기 (C 컴파일러를 사용할 수있는 가정)을 찾을 수 있습니다
sizeof(void*)
또는sizeof(size_t)
.
답변
64 비트를 실행 중인지 확인 uname -a
하고 사용할 수 있습니다 x86_64
. 다른 건 (내가 아는 한) 당신은 32 비트를 실행하거나 같은 비 PC 하드웨어에있는 alpha
, sparc
또는, ppc64
.
답변
uname -m | sed 's/x86_//;s/i[3-6]86/32/'
답변
유형:
uname -a
당신이 얻을 경우, x86_64 GNU/Linux
당신은 64 비트 커널을 실행하고 있습니다. 비슷한 것을 얻는다면 i386/i486/i586/i686
아마도 32 비트 커널을 실행하고있을 것입니다
답변
getconf 는 가장 적은 시스템 호출을 사용합니다.
$ strace getconf LONG_BIT | wc -l
253
$ strace arch | wc -l
280
$ strace uname -m | wc -l
281
$ strace grep -q lm /proc/cpuinfo | wc -l
301