답변:
시도하십시오 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 는 자신의 답변 에서 "현재 요즘 시스템은 다중 아키텍처 가 될 수 있으므로 어쨌든 의미가 없습니다. 컴파일러의 기본 대상을 찾고 싶을 것입니다."
uname -i
, uname -p
그리고 uname -m
쇼를?
64 비트 플랫폼을 실행중인 경우 x86_64 또는 uname -a 의 출력에서 매우 유사한 것이 표시됩니다.
특정 머신 하드웨어 이름을 실행하려면
uname -m
전화 할 수도 있습니다
getconf LONG_BIT
32 또는 64를 반환
uname -m
출력 x86_64
getconf LONG_BIT
출력 32
어느 것이 맞습니까 ?? : \
uname -m
QP가가의 유용하지 않다 configure
가 잘못된 결과를 제공 할 수있다. 은 getconf LONG_BIT
지정된에 의해에 대한 올바른 크기하지 않을 수 있습니다 C 라이브러리의 기본 비트 크기 얻을 CC
, 컴파일러.
getconf LONG_BIT
32 비트를 제공 할 수 있으며 32 비트 응용 프로그램 (일반적으로 32 비트 사용자 영역을 실행하는 64 비트 커널)으로 빌드되었습니다.
lscpu
CPU에 관한 다른 정보들 중에서 다음을 나열합니다 :
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
...
쉬운 결정을위한 또 다른 유용한 명령은 다음과 같습니다.
명령:
getconf LONG_BIT
대답:
명령
$ 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입니다).
dpkg --architecture
필요가없는 호스트 시스템 아키텍처를 얻기 위해 다음 을 사용할 수 있습니다 dpkg-dev
.
dpkg: error: unknown option --architecture
14.04의 dpkg 1.17.5ubuntu를 생성 합니다. dpkg-architecture (dpkg-dev가 설치된 상태)는 정상적으로 작동합니다.
dpkg --print-architecture
은 데비안에서 영원히 작동했습니다. 이것은 작동하지만 데비안에 국한되며 파생 상품입니다.
#include <stdio.h>
int main(void)
{
printf("%d\n", __WORDSIZE);
return 0;
}
i686 대신 64 비트 OS가있는 경우 x86_64
또는 ia64
의 결과가 표시 uname -a
됩니다. 이 두 문자열 중 하나도 없습니다. 32 비트 OS가 있습니다 (CPU가 64 비트가 아님을 의미하지는 않습니다).
uname
64 비트 OS를 나타내는 다른 값이 출력에 있습니다. 모든 세계가 x86 또는 Itanium은 아닙니다.
그 시스템은 32 비트입니다. iX86은 uname
32 비트 아키텍처임을 의미합니다. 64 비트라면
Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 x86_64 i686 x86_64 x86_64 GNU/Linux
요즘에는 시스템이 다중 아키텍처가 될 수 있으므로 어쨌든 의미가 없습니다. 컴파일러의 기본 대상을 찾을 수 있습니다.
$ cc -v 2> & 1 | grep ^ 대상 대상 : x86_64-pc-linux-gn
당신은 안녕 세계를 컴파일하려고 할 수 있습니다 :
$ echo 'int main () {return 0; } '| cc -xc--o foo $ 파일 foo foo : ELF 64 비트 LSB 실행 파일, x86-64, 버전 1 (SYSV), 동적으로 링크 된 인터프리터 /lib64/ld-linux-x86-64.so.2, GNU / Linux 2.6.32, BuildID [sha1] = b114e029a08abfb3c98db93d3dcdb7435b5bba0c, 제거되지 않음
cc -v | grep …
어쨌든 컴파일러 별을이고, 하나는 사용할 수 cc -dumpmachine
grepping 필요로하지 않고 GCC에 의해뿐만 아니라 지원된다.
답변 "getconf LONG_BIT" 와 관련하여 .
'C'에서 간단한 함수를 작성했습니다.
/*
* check_os_64bit
*
* Returns integer:
* 1 = it is a 64-bit OS
* 0 = it is NOT a 64-bit OS (probably 32-bit)
* < 0 = failure
* -1 = popen failed
* -2 = fgets failed
*
* **WARNING**
* Be CAREFUL! Just testing for a boolean return may not cut it
* with this (trivial) implementation! (Think of when it fails,
* returning -ve; this could be seen as non-zero & therefore true!)
* Suggestions?
*/
static int check_os_64bit(void)
{
FILE *fp=NULL;
char cb64[3];
fp = popen ("getconf LONG_BIT", "r");
if (!fp)
return -1;
if (!fgets(cb64, 3, fp))
return -2;
if (!strncmp (cb64, "64", 3)) {
return 1;
}
else {
return 0;
}
}
좋은 생각이야, 'getconf'!
CHAR_BIT*sizeof(void*)
또는 __WORDSIZE
C.에서
fgets
: stackoverflow.com/questions/16323185/...
환경 변수를 사용하여 확인할 수도 있습니다.
echo $HOSTTYPE
결과:
i386
-> 32 비트
x86_64
-> 64 비트
http://www.sysadmit.com/2016/02/linux-como-saber-si-es-32-o-64-bits.html 에서 추출
/bin/bash
환경 변수가 아니기 때문에 내장 변수입니다. 이미 Bash에 의존하고 있다면 정상적으로 작동합니다. 그러나 결과가 될 수있다 i386
, i486
, i586
, i686
등 때문에주의해야합니다.
Bash에서 정수 오버플로 사용 :
if ((1 == 1<<32)); then
echo 32bits
else
echo 64bits
fi
다른 프로세스를 호출하거나 파일을 여는 것보다 훨씬 효율적입니다.
1을 32만큼 왼쪽으로 이동하고 1을 얻으면 시스템은 32 비트입니다. 1을 64만큼 왼쪽으로 시프트하고 1을 얻으면 시스템은 64 비트입니다.
다시 말해,
if echo $((1<<32)) gives 1 then your system is 32 bit
.
if echo $((1<<64)) gives 1 then your system is 64 bit
.
사용 가능한 바이너리 (예 : initramfs)가 심각하게 제한되어 있다면 동료들은 다음과 같이 제안했습니다.
$ ls -l /lib*/ld-linux*.so.2
내 ALT Linux 시스템에서 i586은 /lib/ld-linux.so.2
있고 x86_64는 /lib64/ld-linux-x86-64.so.2
입니다.
$ grep "CONFIG_64" /lib/modules/*/build/.config
# CONFIG_64BIT is not set
64 비트 또는 32 비트를 가져 오는 간단한 스크립트
if $(getconf LONG_BIT | grep '64'); then
echo "64 bit system"
else
echo "32 bit system"
fi
먼저 Virtual Box를 다운로드해야합니다. 그런 다음 새로운 32 비트 Linux를 선택하십시오. 그런 다음 Linux를 사용하여 부팅하십시오. 부팅되면 32 비트이고 그렇지 않으면 64 비트입니다.