답변:
"uname -m"은 찾고있는 명령입니다. 최신 인텔 및 AMD 프로세서에서 32 비트 및 64 비트를 모두 실행할 수 있으므로 "uname -p"는 도움이되지 않습니다 (또한 요즘 대부분 작동하지 않습니다. 여기에서 core2는 "uname -p"에 대한 응답을 생각합니다. "알 수 없음").
일부 하드웨어 및 시스템 관련 패키지는 32 비트 및 64 비트 라이브러리를 모두 설치하여 안전한 곳에 설치하므로 / usr / lib64의 존재를 찾는 것은 도움이되지 않습니다. 내 (데비안) 시스템에서 fakeroot 패키지가 그렇게합니다.
"uname -m"의 출력에 관해서는, i386 또는 i686이면 32 비트이고, x86_64 (또는 alpha, ia64 또는 다른 64 비트 아키텍처로는 본 적이 없습니다.) : 64 비트입니다.
(재미있게, 내 64 비트 FreeBSD 서버는 "amd64"를 반환합니다. 인텔 쿼드 코어에서는 조금 이상하지만 x86 64 비트 아키텍처의 역사를 알고 있다면 완전히 이해할 수 있습니다.
uname -a하고 x86_64를 찾으십시오. CPU가 64 비트를 처리 할 수 있는지 알고 싶다면 cat / proc / cpuinfo를보고 플래그 내에서 lm을 찾으십시오.
혼동을 피하기 위해 32 비트 유저 랜드로 64 비트 커널을 실행할 수 있습니다. 이 경우 uname -m
반환 x86_64
하지만 64 비트 라이브러리가 설치되어 있지 않으므로 대부분의 64 비트 프로그램이 실행되지 않습니다.
당신이 끝나면 uname 확인 그래서 일단, 당신을 위해 볼 필요가 /lib64/ld-linux-x86-64.so.2
, /lib64/libc-2.7.so
그리고 /lib/ld-linux.so.2
, /lib/libc-2.7.so
64 비트 및 32 비트 라이브러리를 사용할 수 있는지 여부를 확인 할 수 있습니다. 그리고 실제로 확인하려면 해당 파일을 실행하고 올바르게 실행되는지 확인하십시오.
또 다른 유용한 정보는 출력 lsb_release -a
이 크로스 디스트로이 며 어떤 아키텍처 별 LSB 모듈을 사용할 수 있는지보고합니다.
lsb_release -a
userland 아키텍처를 출력하지 않습니다
또 다른 방법은 perl에게 컴파일러에게 긴 정수의 크기가 무엇이라고 말했는지 물어 보는 것입니다.
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
vs.
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32
또는 gcc가 설치되어 있다면 C와 동일합니다.
$ cat > bits.c <<EOC
> #include <stdlib.h>
> #include <stdio.h>
>
> int main(void) {
> printf("%d\n", (int)sizeof(long)*8);
>
> exit(0);
> }
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
64
vs.
[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32
:-)
중복 :
Linux + Linux 버전 32 비트 또는 64 비트를 확인하는 방법
uname -m 은 커널의 실행중인 '아키'/ 아키텍처 만 제공합니다. 64 비트 지원 CPU에서 32 비트 GNU / Linux 배포를 실행 중인지 여부는 알려지지 않습니다.
CPU 기능을 알려면 :
cat /proc/cpuinfo
'LM'플래그는 'LONG MODE'(64 비트 확장, AMD의 AMD64 또는 인텔의 EM64T)를 나타내므로 64 비트 시스템에 있어야합니다.
$ uname -p
x86_64
/ usr / lib64가 있다면 x86_64를 실행하고있는 것입니다.
브래드 길버트의 명령에는 펄 버그가있었습니다. 문제를 해결했으며 아래 명령이 작동합니다. cat / proc / cpuinfo | grep ^ 플래그 | perl -e '$ = <>; print ($ ? "x86_64 \ n": "x86_64 \ n"아님)'