특정 ARM 아키텍처 문자열을 결정하는 간단한 명령줄 방식이 있습니까?

특정 ARM 아키텍처 문자열을 결정하는 간단한 명령줄 방식이 있습니까?

나는 기계의 아키텍처를 기반으로 동작을 결정하는 스크립트를 작성하려고 합니다. 예전에 아키텍처 라인을 모아봤는데 ARM 아키텍처가 몇 개나 있는지, 그 중 하나가 , , , uname -m인지는 잘 모르겠습니다 .armhfarmelarm64

armhf이 스크립트는 스크립트의 특정 부분이 실행될 수 있는지 확인해야 하기 때문에 아키텍처가 인지 armel여부를 확인하는 간단한 방법을 찾으려고 합니다 arm64. 출력 에 사용할 수 있는 한 줄 명령이나 간단한 명령 이 있습니까 armhf?armelarm64

스크립트는 Debian 및 Ubuntu 시스템용으로 특별히 작성되었으며 이를 염두에 두고 태그를 지정했습니다(이 배포판 중 하나에 없으면 자동으로 종료되지만 명령이 존재하는 경우 더 넓은 방식으로 적용될 수도 있습니다) )


편집: 최근 armel이 죽었고 arm64 소프트웨어 빌더(PPA 또는 가상 기반)가 가장 안정적이지 않다는 사실을 알게 되었습니다. 따라서 armhf를 찾고 가정하기 위한 와일드카드 검색이 있지만 arm*여전히 세 가지 중 하나(Ubuntu/Debian 명령, 커널 호출 또는 기타 명령)를 반환하는 단일 행을 찾아야 합니다.

답변1

데비안과 그 파생물에서는

dpkg --print-architecture

프로그램이 실행 중인 머신의 기본 아키텍처를 출력합니다. 이는 armhf32비트 ARM Debian 또는 Ubuntu(또는 파생 제품)를 실행하는 컴퓨터와 arm6464비트 ARM을 실행하는 컴퓨터에서 작동합니다 .

RPM 기반 시스템에서는

rpm --eval '%{_arch}'

현재 스키마 이름을 출력합니다(다른 매개변수의 영향을 받을 수 있음,예를 들어 --target).

실행 중인 아키텍처는 하드웨어 아키텍처 또는 커널 아키텍처와 다를 수 있습니다. 데비안은 64비트 Intel 또는 AMD CPU에서 실행될 것이며 64비트 ARM CPU에서도 실행될 i386것이라고 믿습니다 . 커널에 armhf대부분의 바이너리(기본 아키텍처 포함)가 있을 수도 있고 i386, QEMU가 지원하는 경우 완전히 다른 아키텍처의 바이너리도 있을 수 있습니다(일반적인 용도는 크로스 컴파일을 위한 chroot입니다).i386amd64debootstrap

답변2

이 명령은 시스템에 dpkg가 설치되어 있지 않은 경우(예: 제거된 도커 컨테이너) 도움이 됩니다.

$ arch

관련 정보