가능한 중복은 :
How to determine whether a given Linux is 32 bit or 64 bit?perl 스크립트에서 64 비트 또는 32 비트 Linux에서 실행 중인지 어떻게 알 수 있습니까?
내가 직접 (UNAME를 사용하는 예를 들어) 쉘에 액세스하지 않습니다. 내가 빨리 리눅스에서 일하는 알고 아키텍처 (32 비트 또는 64 비트 경우에만)를 감지하는 빠른 방법을 찾고 있는데요.
가능한 중복은 :
How to determine whether a given Linux is 32 bit or 64 bit?perl 스크립트에서 64 비트 또는 32 비트 Linux에서 실행 중인지 어떻게 알 수 있습니까?
내가 직접 (UNAME를 사용하는 예를 들어) 쉘에 액세스하지 않습니다. 내가 빨리 리눅스에서 일하는 알고 아키텍처 (32 비트 또는 64 비트 경우에만)를 감지하는 빠른 방법을 찾고 있는데요.
있습니다.
/proc/cpuinfo
은이 정보를 구문 분석하기가 어렵습니다. 기본적으로 서로 다른 CPU가 무엇인지에 대한 테이블이 있어야합니다. 커널이 64 비트라면 "주소 크기"에서 32보다 큰 숫자를 얻을 것이라고 생각합니다.use POSIX;
을 믿고 (POSIX::uname())[4]
을 검사하는 것은 표준적인 대답이지만 -d /lib64
, -d /usr/lib64
이 참이라는 것도 좋은 지표입니다.use Config;
그리고 , $Config{myarchname}
, $Config{use64bitint}
또는 "64 비트"라고 생각하는 것과 일치하는 Config의 다른 변수를 확인하십시오.이것은 좋으며, Config에는 더 많은 구분이 있습니다. 예를 들어 호환성을 위해 32 비트 IV가있는 64 비트 컴파일러가있는 64 비트 컴퓨터에서 perl을 빌드 할 수 있습니다. 이 경우,'longsize'는 8,'ivsize' 4,'use64bitint' undef :)이 될 수 있습니다. – hobbs
perl -e 'use Config; print $Config{longsize}';
Perl의 64 비트 구현에서 8 바이트를, Perl의 32 비트 구현에서 4 바이트를 반환합니다.
하드웨어를 실제로 확인하려면 uname을 수행하거나 64 비트 시스템 (예 :/lib64)에 합리적으로 존재하는 것이 있는지 확인해야합니다. 32 비트 응용 프로그램에 고정되어있는 경우 64 비트 하드웨어 지원을 아는 것은 대단히 유용하지 않습니다. 하나의 마법 "64 비트"가 아니라고 모든
참고 의미 할 수도 있고 다른 것들을 많이있다 : 당신이 요구 될 수있는 3 개 별도의 질문이
'uname' 또는'lib64 '가 없으면 하드웨어에 관해서 만 알려주지 않습니다. 운영 체제. 64 비트 프로세스를 생성 할 수 있기 때문에 OS가 64 비트를 지원한다는 것은 매우 유용합니다. –
OS를 거치지 않고 하드웨어를 사용할 수 있다는 것을 암시한다면, 리눅스의 어떤 맛을 사용하고 있습니까? 아직도, 당신은 cpuinfo를 움켜 잡고 하드웨어 아키텍처를 결정할 수 있다고 생각하지만, 당신이 그것에 접근하지 못하는 OS를 사용한다면 그 유틸리티가 그다지 큰 의미가 아닐 수도 있습니다. –
64 비트 하드웨어를 사용하는 것이 전적으로 가능하지만 언급 한 모든 표시기는 32 비트 결과를 제공합니다. "하드웨어"를 "OS"와 "시스템"으로 "환경"으로 대체하면 대답은 대부분 정확합니다 ... 마지막 문장은 여전히 잘못 될 것입니다 - 32 비트 응용 프로그램을 사용하면 생성을 제한하지 않습니다 64 환경이 64 비트 인 경우 비트 프로세스. –
이 질문은 Perl을 지정하고 uname을 사용하지 않도록 설정합니다. 그 "복제본"의 모든 것은 쉘에서 uname을 사용하는 것입니다. 나에게 전혀 똑같은 복제본 같지 않아. – freiheit
참조 http://stackoverflow.com/questions/3224082/elegantly-determining-system-architecture-within-perl/3224559#3224559 –