나는 기계의 아키텍처를 기반으로 동작을 결정하는 스크립트를 작성하려고 합니다. 예전에 아키텍처 라인을 모아봤는데 ARM 아키텍처가 몇 개나 있는지, 그 중 하나가 , , , uname -m
인지는 잘 모르겠습니다 .armhf
armel
arm64
armhf
이 스크립트는 스크립트의 특정 부분이 실행될 수 있는지 확인해야 하기 때문에 아키텍처가 인지 armel
여부를 확인하는 간단한 방법을 찾으려고 합니다 arm64
. 출력 에 사용할 수 있는 한 줄 명령이나 간단한 명령 이 있습니까 armhf
?armel
arm64
스크립트는 Debian 및 Ubuntu 시스템용으로 특별히 작성되었으며 이를 염두에 두고 태그를 지정했습니다(이 배포판 중 하나에 없으면 자동으로 종료되지만 명령이 존재하는 경우 더 넓은 방식으로 적용될 수도 있습니다) )
편집: 최근 armel이 죽었고 arm64 소프트웨어 빌더(PPA 또는 가상 기반)가 가장 안정적이지 않다는 사실을 알게 되었습니다. 따라서 armhf를 찾고 가정하기 위한 와일드카드 검색이 있지만 arm*
여전히 세 가지 중 하나(Ubuntu/Debian 명령, 커널 호출 또는 기타 명령)를 반환하는 단일 행을 찾아야 합니다.
답변1
데비안과 그 파생물에서는
dpkg --print-architecture
프로그램이 실행 중인 머신의 기본 아키텍처를 출력합니다. 이는 armhf
32비트 ARM Debian 또는 Ubuntu(또는 파생 제품)를 실행하는 컴퓨터와 arm64
64비트 ARM을 실행하는 컴퓨터에서 작동합니다 .
RPM 기반 시스템에서는
rpm --eval '%{_arch}'
현재 스키마 이름을 출력합니다(다른 매개변수의 영향을 받을 수 있음,예를 들어 --target
).
실행 중인 아키텍처는 하드웨어 아키텍처 또는 커널 아키텍처와 다를 수 있습니다. 데비안은 64비트 Intel 또는 AMD CPU에서 실행될 것이며 64비트 ARM CPU에서도 실행될 i386
것이라고 믿습니다 . 커널에 armhf
대부분의 바이너리(기본 아키텍처 포함)가 있을 수도 있고 i386
, QEMU가 지원하는 경우 완전히 다른 아키텍처의 바이너리도 있을 수 있습니다(일반적인 용도는 크로스 컴파일을 위한 chroot입니다).i386
amd64
debootstrap
답변2
이 명령은 시스템에 dpkg가 설치되어 있지 않은 경우(예: 제거된 도커 컨테이너) 도움이 됩니다.
$ arch