简单的命令行方法来确定特定的ARM体系结构字符串?


24

我正在尝试编写一个脚本,该脚本将根据计算机的体系结构确定操作。我已经使用uname -m来收集建筑线,但我不知道有多少ARM架构也有,我也不知道一个人是否是armhfarmelarm64

由于这是需要这种脚本来确定脚本的部分是否可以运行或不,我试图找到一个简单的方法来确定该架构armhfarmelarm64。是否有可用于输出或者任何单行或简单的命令armhfarmelarm64

该脚本是专门为Debian和Ubuntu系统编写的,因此我谨以此标记(如果您不在这些发行版之一中,它将自动退出,但是如果该发行版可以用更广泛的方式应用,命令存在)


编辑:最近了解到armel已死,而arm64软件构建器(基于PPA或基于虚拟的)并不是最稳定的。因此,我有一个通配符搜索发现arm*并假设使用了armhf,但是仍然有必要找出一个返回三个函数之一的liner-无论是Ubuntu / Debian命令还是内核调用或其他东西。


case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac你是这样的吗?
Costas

@Costas是的,这实际上是我所追求的,但是获得拱门是棘手的部分。由于解决方案可能是针对发行版和特定于OS模型的,因此Debian和Ubuntu是相似的,并且是我的目标,因此能够解决问题然后可用的解决方案将非常有用。(这不是一个纯粹的编程问题提出,我只需要在命令抓取特定拱-我已经有了i386i686以及x86_64基于案件uname -m,但没有对arm??......至少,没有什么标识armhfarmelarm64) 。
Thomas Ward

你什么意思?
Costas

1
@Costas在ARM设置上,uname -m吐出特定的手臂板- armv7l例如。它没有明确说是否是armelarmhf或者arm64-这正是我需要的$(arch),以最终成为以淘汰不兼容的操作系统架构。
Thomas Ward

如果解析/proc/config.gz,则可能会更好。
umeboshi 2015年

Answers:


39
dpkg --print-architecture

将输出正在运行的计算机的主要体系结构。这将armhf在运行32位ARM Debian或Ubuntu(或衍生版本)arm64的计算机上,或在运行64位ARM的计算机上。

请注意,正在运行的体系结构可能与硬件体系结构甚至内核体系结构都不相同。可以i386在64位Intel或AMD CPU上运行Debian,我相信可以armhf在64位ARM CPU上运行。甚至有可能在内核上包含大多数i386二进制文件(因此主要架构是i386amd64


是的,但这将确定脚本包所需的体系结构。今天,我将对此进行测试,谢谢。
Thomas Ward

1
在android设备上,没有dpkg命令。我应该怎么做才能检测Android设备的体系结构?
Dr.jacky '16

@ Mr.Hyde这个问题专门针对Debian和Ubuntu;我建议您在这里或在android.stackexchange.com上问一个新的问题,是否要为Android答案。
史蒂芬·基特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.