विशिष्ट एआरएम आर्किटेक्चर स्ट्रिंग निर्धारित करने के लिए आसान कमांड लाइन विधि?


24

मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो मशीन की वास्तुकला के आधार पर क्रियाओं का निर्धारण करेगा। मैं पहले से ही उपयोग करें uname -mलेकिन मैं देखते हैं कि कितने एआरएम आर्किटेक्चर पता नहीं है, वास्तुकला लाइन इकट्ठा करने के लिए, और न ही मैं जानता हूँ कि एक है कि क्या करना armhf, armelया arm64

जैसा कि इस स्क्रिप्ट के लिए यह निर्धारित करना आवश्यक है कि स्क्रिप्ट के कुछ हिस्सों को चलाया जा सकता है या नहीं, मैं यह निर्धारित करने के लिए एक सरल तरीका खोजने की कोशिश कर रहा हूं कि क्या वास्तुकला है armhf, armelया arm64। वहाँ किसी भी एक लाइनर या साधारण आदेश है कि उत्पादन या तो किया जा सकता है है armhf, armelया arm64?

स्क्रिप्ट विशेष रूप से डेबियन और उबंटू सिस्टम के लिए लिखी गई है, और मैं इसे इस तरह से ध्यान में रखकर टैग कर रहा हूं (यह स्वचालित रूप से क्विट करता है यदि आप उन डिस्ट्रो में से एक पर नहीं हैं, लेकिन इसे बहुत व्यापक तरीके से लागू किया जा सकता है कमांड (s) मौजूद है


संपादित करें: हाल ही में पता चला है कि आर्मल मर चुका है, और आर्म 64 सॉफ्टवेयर बिल्डर्स (पीपीए या वर्चुअल आधारित) सबसे स्थिर नहीं हैं। तो मेरे पास एक वाइल्डकार्ड खोज है arm*और इसे संभालने वाला है, लेकिन अभी भी एक लाइनर का पता लगाना आवश्यक है जो तीनों में से एक को लौटाता है - चाहे वह उबंटू / डेबियन कमांड हो या कर्नेल कॉल या कुछ और।


case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esacक्या आप इस तरह से कुछ करते हैं?
कोस्टास

@ कोस्टस हाँ, यह प्रभावी रूप से मैं के बाद कर रहा हूँ, लेकिन कट्टर हो रही मुश्किल हिस्सा है। चूंकि समाधान वितरण और ओएस-मॉडल विशिष्ट हो सकते हैं, डेबियन और उबंटू समान हैं और मेरे लक्ष्य हैं, इसलिए समाधान जो मेहराब को बाहर निकालेंगे और फिर उपयोग करने योग्य होंगे। (यह एक शुद्ध प्रोग्रामिंग सवाल या तो, मैं सिर्फ आदेश की जरूरत विशिष्ट मेहराब हड़पने के लिए नहीं है - मैं पहले से ही है i386, i686और x86_64के आधार पर मामलों uname -m, लेकिन कुछ भी नहीं arm??... या कम से कम, कुछ भी नहीं है कि पहचान करता है armhf, armelया arm64) ।
थॉमस वार्ड

क्या मतलब?
कोस्टास

1
@ कोस्ट एआरएम सेटअप पर, उदाहरण के लिए uname -m, विशिष्ट हाथ बोर्ड से बाहर निकलता है armv7l। यह स्पष्ट रूप से नहीं कहा गया है कि क्या यह है armel, armhfया arm64- जो मुझे $(arch)असंगत ओएस वास्तुकारों के साथ खरपतवार के रूप में समाप्त करने की आवश्यकता है।
थॉमस वार्ड

यदि आप वहां हैं तो बेहतर होगा कि आप /proc/config.gz को पार्स करें।
.मोबोशी

जवाबों:


39
dpkg --print-architecture

इस पर चलने वाली मशीन के प्राथमिक आर्किटेक्चर को आउटपुट करेगा। यह armhf32-बिट एआरएम डेबियन या उबंटू (या एक व्युत्पन्न) arm64चलाने वाली मशीन पर होगा , 64-बिट एआरएम चलाने वाली मशीन पर।

ध्यान दें कि रनिंग आर्किटेक्चर हार्डवेयर आर्किटेक्चर या कर्नेल आर्किटेक्चर से भिन्न हो सकता है। इसे चलाने के लिए संभव है i386पर एक 64-बिट इंटेल या एएमडी सीपीयू डेबियन, और मेरा मानना है कि इसे चलाने के लिए संभव है armhfएक 64-बिट एआरएम सीपीयू पर। यह भी संभव है कि ज्यादातर i386बायनेरिज़ (ताकि प्राथमिक वास्तुकला है i386) एक amd64कर्नेल पर ...


सही है लेकिन यह स्क्रिप्ट के पैकेज के लिए आवश्यक वास्तुकला का निर्धारण करेगा। मैं आज इसका परीक्षण करूंगा, धन्यवाद।
थॉमस वार्ड

1
एंड्रॉइड डिवाइस पर, कोई dpkg कमांड नहीं है। एंड्रॉइड डिवाइस की वास्तुकला का पता लगाने के लिए मुझे क्या करना चाहिए?
डॉ। जैकी

@ श्री हयडे ने विशेष रूप से डेबियन और उबंटू को लक्षित किया; मेरा सुझाव है कि आप एक नया प्रश्न पूछें यदि आप एंड्रॉइड के लिए जवाब चाहते हैं, तो यहां या android.stackexchange.com पर ।
स्टीफन किट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.