특정 ARM 아키텍처 문자열을 결정하는 쉬운 명령 줄 방법?


24

컴퓨터의 아키텍처를 기반으로 작업을 결정하는 스크립트를 작성하려고합니다. 이미 사용 uname -m하지만 내가 얼마나 많은 ARM 아키텍처 모르는, 아키텍처 라인을 수집 할 수 없으며, 내가 한인지 알고 armhf, armel또는 arm64.

이것은 스크립트의 일부를 실행할 수 있는지 여부를 확인이 스크립트가 필요합니다, 나는 아키텍처가 있는지 확인하는 간단한 방법을 찾기 위해 노력하고 armhf, armelarm64. 출력 중 어느 하나에 이용 될 수있는 한 줄 또는 간단한 명령 있는가 armhf, armel또는은 arm64?

이 스크립트는 데비안과 우분투 시스템을 위해 특별히 작성되었으며, 이것을 염두에두고 태그를 작성하고 있습니다 (그 배포판 중 하나에 있지 않으면 자동으로 종료되지만, 명령이 존재합니다)


편집 : 최근 armel이 죽었고 arm64 소프트웨어 빌더 (PPA 또는 가상 기반)가 가장 안정적이지 않다는 것을 알게되었습니다. 그래서 와일드 카드를 찾고 arm*armhf를 가정하고 있지만 우분투 / 데비안 명령이든 커널 호출이든 관계없이 세 가지 중 하나를 반환하는 하나의 라이너를 찾아야합니다.


case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac이런 식으로 되었습니까?
Costas

@Costas 그렇습니다. 실제로 내가 추구하는 것이지만 아치를 얻는 것이 까다로운 부분입니다. 솔루션은 배포판과 OS 모델에 따라 다를 수 있으므로 데비안과 우분투는 비슷하며 저의 목표이므로 아치를 풀고 사용할 수있는 솔루션이 좋습니다. (이것은 순수한 프로그래밍 질문 중 하나, 난 그냥 특정 아치를 잡아 명령을 필요로하지 않습니다 - 내가 이미 가지고있는 i386, i686그리고 x86_64기반의 경우 uname -m, 만에 아무것도 arm??... 또는 적어도, 아무것도 그 식별 armhf, armel또는 arm64) .
토마스 워드

무슨 소리 야?
Costas

1
@Costas ARM 설정 uname -m에서 특정 암 보드를 뱉습니다 ( armv7l예 :) . 그것은 명시 적으로인지 말하지 않는다 armel, armhf또는 arm64내가 필요하다 - $(arch)와 호환되지 않는 OS 아키텍처 걸러 순서로 끝날 수 있습니다.
Thomas Ward

/proc/config.gz가 있으면 구문 분석하는 것이 좋습니다.
우메보시

답변:


38
dpkg --print-architecture

실행되는 컴퓨터의 기본 아키텍처를 출력합니다. 이것은 armhf32 비트 ARM Debian 또는 Ubuntu (또는 파생 제품)를 arm64실행하는 시스템과 64 비트 ARM을 실행하는 시스템에 있습니다.

실행중인 아키텍처는 하드웨어 아키텍처 또는 커널 아키텍처와 다를 수 있습니다. i38664 비트 Intel 또는 AMD CPU에서 데비안 을 실행할 수 armhf있으며 64 비트 ARM CPU 에서 실행할 수 있다고 생각합니다 . 커널 에 i386바이너리 가 많을 수도 있습니다 (따라서 기본 아키텍처는 i386) amd64.


그러나 이것은 스크립트 패키지에 필요한 아키텍처를 결정합니다. 나는 오늘 이것을 시험 할 것이다, 감사합니다.
토마스 워드

1
안드로이드 장치에는 dpkg 명령이 없습니다. Android 기기의 아키텍처를 감지하려면 어떻게해야합니까?
Dr.jacky

@ Mr.Hyde이 질문은 특히 데비안과 우분투를 겨냥했습니다. 여기 또는 android.stackexchange.com 에서 Android에 대한 답변을 원한다면 새로운 질문을하시기 바랍니다 .
Stephen Kitt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.