답변:
에서 라인을 확인하여 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)
.
getconf WORD_BIT
또는 getconf LONG_BIT
대신 (그것이 비록 사소한, 휴대용) 자신의 C 프로그램을 컴파일 할 필요없이.
getconf
여기 에서 사용하는 것을 생각하지 못했습니다 . 원칙적으로는 훌륭하게 들리지만 결과가 하나 이상 (일반적으로 gcc / icc 또는 Linux의 경우 gcc / native cc) 인 경우 사용중인 특정 C 컴파일러에 결과를 적용하기가 어렵습니다. 표준 시스템 getconf
에서 c89
또는 c99
에 적용해야 $(getconf PATH)
하지만 실제로 cc
는 공급 업체 c89
래퍼 가 실행 하는 대체 제품 을 설치하는 사람이 걱정 됩니다.
.
정규식에 누락 이 있습니다 : grep '^flags.*:.*\blm\b' /proc/cpuinfo
. 또한 그것은 -q
깃발 없이 나를 위해 작동합니다
.
“0 개 이상의 공백”이 있었지만 실제로 탭이 있습니다. 탭을 허용하도록 정규 표현식을 변경했습니다. -q
플래그를 사용하면 출력이 없지만 명령의 종료 상태는 플래그가 있는지 여부를 알려줍니다. 출력을 원하면 -q
플래그를 제거하십시오 .
-q
깃발 에 대해 몰랐다 . Ty, 지금 작동 :)
64 비트를 실행 중인지 확인 uname -a
하고 사용할 수 있습니다 x86_64
. 다른 건 (내가 아는 한) 당신은 32 비트를 실행하거나 같은 비 PC 하드웨어에있는 alpha
, sparc
또는, ppc64
.
alpha
, sparc64
, ppc64
, ...