내 리눅스 ARM 32 또는 64 비트입니까? 볼 수 있지만 ARM에서는

인텔에서 나는 uname -m내 OS가 32 또는 64 비트인지 알 수있는 결과를 볼 수 있지만 ARM에서는 다음을 제공합니다.

armv7l

나는 추론했다

file /usr/bin/ls

내가 32 비트 OS를 사용하고 있지만 어떻게 더 쉽게 알 수 있습니까?



답변

64 비트 가능 CPU에서 32 비트 또는 혼합 운영 체제를 실행할 수 있으므로 몇 가지 그라데이션이 있습니다. 64 비트 커널을 참조 하지만 프로세스를 실행하는 모든 32 비트 ELF 실행 파일을 참조하십시오 . 자세한 논의를 위해 (x86 용으로 작성되었지만 대부분 팔에도 적용됨).

에서 프로세서 모델을 찾을 수 있습니다 /proc/cpuinfo. 예를 들면 다음과 같습니다.

$ cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 10 (v7l)

ARMv7 이하는 32 비트입니다. ARMv8 에는 64 비트 명령어 세트가 도입되었습니다.

시스템이 64 비트 바이너리를 지원하는지 확인하려면 커널 아키텍처를 확인하십시오.

$ uname -m
armv7l

64 비트 프로세서에서는 프로세스 자체가 32 비트 프로세스이거나 64 비트 프로세스 인 armv8경우 시작하는 문자열 이상 uname이 표시 aarch64됩니다. ( https://stackoverflow.com/questions/45125516/possible-values-for-uname-m 참조 )


답변

Richard가 지적한 것처럼 armv7변형은 모두 32 비트이므로 중복 레이블 armv7-32등 이 없습니다 .

리눅스 시스템에서는, 실제로 결정적인 것은 아니지만, 일반적인 실행 파일을 검사하여 쉽게 확인할 수 있습니다 :

> which bash
/bin/bash
> file /bin/bash
/bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...

64 비트 시스템에서 32 비트 실행 파일을 실행할 수 있기 때문에 “확실하지 않습니다”라고 말합니다.

/proc또는에 무모한 것으로 보이지 않습니다 /sys. 의 결과 는 몇 가지 중요한 단서를 제공 /proc/cpuinfo 할 수 있습니다 . 어떤 이유로 자동 검사가 필요한 경우, “모델 이름”필드에 매핑 된 테이블을 생성하는 것은 하나의 잠재적으로 건전한 방법으로 보입니다 ( “모델”, “cpu 제품군”등의 다른 필드는 선택적으로 보입니다. t는 Broadcom 2708 ARMv6 프로세서에 전혀 나타나지 않습니다).


답변

‘lshw’패키지를 설치하십시오.

# lshw
...
    description: Computer
    product: Raspberry Pi 3 Model B Rev 1.2
    width: 32 bits
...


답변

비트 수를 확인하는 대부분의 방법은 arm7 = 32 비트임을 아는 것입니다.

pi@rpi9:~ $ getconf LONG_BIT
32

CPU 모델을 찾으려면 일반적으로 아치를 사용합니다.

root@rpi4:~# tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi Model B Rev 2
armv6l

pi@rpi9:~ $ tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi 3 Model B Rev 1.2
armv7l


답변

다음을 시도하십시오.

// -*- compile-command: "gcc -Wall -o sizeof sizeof.c && ./sizeof" -*-

#include <stdio.h>
#include <limits.h>

#define size(t) { t x; printf("%s:\t%3lu bit\n", #t, CHAR_BIT * sizeof x); }

int main (int argc, char *argv[])
{
  size(char);
  size(short);
  size(int);
  size(long);
  size(void*);
  return 0;
}

주소 크기는 void*입니다.


답변

아니요, 64 비트 컴퓨터입니다. Allwinner H8이고 마녀는 두 배의 ARM-7입니다. 8 배속, 64 비트, powervr, sgx 544, 배속 (700MHz).

따라서 64 비트가 될 수 있습니다. OS 만 32 일 수 있습니다.


답변