[linux] 주어진 Linux가 32 비트인지 64 비트인지 확인하는 방법은 무엇입니까?

내가 입력 uname -a하면 다음과 같은 출력이 나타납니다.

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux

주어진 OS가 32 또는 64 비트임을 어떻게 알 수 있습니까?

configure스크립트 를 작성할 때 유용 합니다. 예를 들어, 어떤 아키텍처를 구축하고 있습니까?



답변

시도하십시오 uname -m. 어느 것이 부족 uname --machine하고 출력합니다.

x86_64 ==> 64-bit kernel
i686   ==> 32-bit kernel

그렇지 않으면 Linux 커널이 아니라 CPU 에 대해 다음을 입력하십시오.

cat /proc/cpuinfo

또는:

grep flags /proc/cpuinfo

“flags”매개 변수 아래에 다양한 값이 표시됩니다. ” / proc / cpuinfo의 플래그는 무엇을 의미합니까? “를 참조하십시오. 그 중 하나의 이름은 lm다음과 같습니다. Long Mode( x86-64 : amd64, Intel 64라고도 알려진 64 비트, 즉 64 비트 유능한)

lm ==> 64-bit processor

또는 사용lshw (언급 한 바와 같이 아래작센의 롤프 없이) sudo(바로 CPU 폭을 grepping 용) :

lshw -class cpu|grep "^       width"|uniq|awk '{print $2}'

참고 : 32 비트 커널이 설치된 64 비트 CPU가있을 수 있습니다 .
( ysdx자신의 답변 에서 “현재 요즘 시스템은 다중 아키텍처 가 될 수 있으므로 어쨌든 의미가 없습니다. 컴파일러의 기본 대상을 찾고 싶을 것입니다.”


답변

64 비트 플랫폼을 실행중인 경우 x86_64 또는 uname -a 의 출력에서 ​​매우 유사한 것이 표시됩니다.

특정 머신 하드웨어 이름을 실행하려면

uname -m

전화 할 수도 있습니다

getconf LONG_BIT

32 또는 64를 반환


답변

lscpu CPU에 관한 다른 정보들 중에서 다음을 나열합니다 :

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
...


답변

쉬운 결정을위한 또 다른 유용한 명령은 다음과 같습니다.

명령:

getconf LONG_BIT

대답:

  • OS가 32 비트 인 경우 32
  • 64, OS가 64 비트 인 경우

답변

명령

$ arch    

에 해당

$ uname -m

하지만 입력하는 속도가 두 배 빠릅니다


답변

데비안 에서 소프트웨어를 빌드하기 위해 특별히 궁금했습니다. 합니다. (설치된 데비안 시스템은 32 비트 커널, 라이브러리 등이있는 32 비트 버전이거나 64 비트 용으로 컴파일 된 64 비트 버전 일 수 있습니다. 32 비트 호환 모드가 아닌 비트).

데비안 패키지 자체는 플랫폼 아키텍처를 포함하여 모든 메타 데이터로 패키지를 실제로 만들 때 (물론) 아키텍처가 무엇인지 알아야합니다. dpkg를 아키텍처 . 여기에는 현재 호스트뿐만 아니라 빌드하도록 구성된 것이 포함됩니다. (일반적으로 이것들은 동일합니다.) 64 비트 컴퓨터에서 출력 예 :

DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu

해당 변수 중 하나만 인쇄하거나 dpkg -architecture 에 대한 명령 행 옵션을 사용하여 해당 값에 대해 테스트를 수행 할 수 있습니다 .

dpkg-architecture가 아키텍처를 어떻게 추론하는지 모르겠지만 문서 또는 소스 코드를 볼 수 있습니다 (dpkg-architecture 및 dpkg 시스템의 대부분은 Perl입니다).


답변

#include <stdio.h>

int main(void)
{
    printf("%d\n", __WORDSIZE);
    return 0;
}