วิธีการบรรทัดคำสั่งง่าย ๆ ในการกำหนดสตริงสถาปัตยกรรม ARM?


24

ฉันพยายามเขียนสคริปต์ซึ่งจะกำหนดการดำเนินการตามสถาปัตยกรรมของเครื่อง ฉันใช้uname -mในการรวบรวมสายสถาปัตยกรรม แต่ผมไม่ทราบว่าหลายสถาปัตยกรรม ARM มีหรือจะทราบได้อย่างไรว่าเป็นหนึ่งarmhf, หรือarmelarm64

เช่นนี้เป็นสิ่งจำเป็นสำหรับสคริปต์นี้เพื่อตรวจสอบว่าบางส่วนของสคริปต์ที่สามารถทำงานได้หรือไม่ฉันกำลังพยายามที่จะหาวิธีง่ายๆในการตรวจสอบว่าเป็นสถาปัตยกรรมarmhf, หรือarmel arm64มีผู้ใดหนึ่งซับหรือคำสั่งง่ายๆที่สามารถนำมาใช้เพื่อการส่งออกอย่างใดอย่างหนึ่งarmhf, armelหรือarm64?

สคริปต์นี้เขียนขึ้นโดยเฉพาะสำหรับระบบ Debian และ Ubuntu และฉันกำลังติดแท็กด้วยเช่นนี้ในใจ (มันจะปิดโดยอัตโนมัติหากคุณไม่ได้อยู่ในหนึ่งใน distros เหล่านั้น มีคำสั่งอยู่


แก้ไข: เรียนรู้เมื่อเร็ว ๆ นี้ว่า Armel นั้นตายแล้วและผู้สร้างซอฟต์แวร์ arm64 (PPA หรือ virtual based) นั้นไม่เสถียรที่สุด ดังนั้นฉันมีการค้นหาการค้นหาตัวแทนarm*และสมมติว่า armhf แต่ก็ยังจำเป็นต้องคิดซับหนึ่งที่ส่งกลับหนึ่งในสาม - ไม่ว่าจะเป็นคำสั่ง Ubuntu / Debian หรือการโทรเคอร์เนลหรืออะไร


case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esacคุณหมายถึงอะไรเช่นนี้?
Costas

@Costas ใช่นั่นคือสิ่งที่ฉันกำลังทำอยู่ แต่การได้ประตูเป็นส่วนที่ยุ่งยาก เนื่องจากโซลูชันอาจเป็นการแจกจ่ายและเฉพาะรุ่นของระบบปฏิบัติการ Debian และ Ubuntu นั้นมีความคล้ายคลึงกันและเป็นเป้าหมายของฉันดังนั้นโซลูชันที่จะทำให้ส่วนโค้งออกมาและใช้งานได้ดี (นี่ไม่ใช่คำถามบริสุทธิ์การเขียนโปรแกรมอย่างใดอย่างหนึ่งผมก็ต้องคำสั่งที่จะคว้าโค้งที่เฉพาะเจาะจง - ฉันมีอยู่แล้วi386, i686และx86_64กรณีขึ้นอยู่กับuname -mแต่ไม่มีอะไรสำหรับarm??... หรืออย่างน้อยก็ไม่มีอะไรที่ระบุarmhf, armelหรือarm64) .
โธมัสวอร์ด

คุณหมายถึงอะไร
Costas

1
@Costas ในการตั้งค่า ARM ให้uname -mแยกกระดานแขนออก - armv7lตัวอย่างเช่น มันไม่ชัดเจนบอกว่าไม่ว่าจะเป็นarmel, armhfหรือarm64- ซึ่งเป็นสิ่งที่ฉันต้องการ$(arch)ที่จะจบลงเช่นเพื่อวัชพืชออกสถาปัตยกรรม OS เข้ากันกับ
โธมัสวอร์ด

คุณอาจจะดีกว่าในการแยกวิเคราะห์ /proc/config.gz หากมี
umeboshi

คำตอบ:


38
dpkg --print-architecture

จะส่งออกสถาปัตยกรรมหลักของเครื่องที่ทำงานอยู่ สิ่งนี้จะอยู่armhfบนเครื่องที่รัน ARM Debian หรือ Ubuntu 32 บิต (หรืออนุพันธ์) arm64บนเครื่องที่ใช้ ARM 64 บิต

โปรดทราบว่าสถาปัตยกรรมที่ทำงานอยู่อาจแตกต่างจากสถาปัตยกรรมฮาร์ดแวร์หรือแม้แต่โครงสร้างเคอร์เนล เป็นไปได้ที่จะรันi386Debian บน CPU 64 บิตของ Intel หรือ AMD และฉันเชื่อว่าเป็นไปได้ที่จะรันarmhfบน CPU ARM 64 บิต เป็นไปได้ที่จะมีi386ไบนารีส่วนใหญ่(ดังนั้นสถาปัตยกรรมหลักi386) บนamd64เคอร์เนล ...


ถูกต้อง แต่จะกำหนดสถาปัตยกรรมที่จำเป็นสำหรับแพ็คเกจของสคริปต์ ฉันจะทดสอบสิ่งนี้ในวันนี้ขอบคุณ
โธมัสวอร์ด

1
บนอุปกรณ์ android ไม่มีคำสั่ง dpkg ฉันควรทำอย่างไรเพื่อตรวจสอบสถาปัตยกรรมของอุปกรณ์ Android
Dr.jacky

@ Mr.Hyde คำถามนี้เฉพาะเจาะจงกับ Debian และ Ubuntu; ผมขอแนะนำให้คุณถามคำถามใหม่ถ้าคุณต้องการคำตอบสำหรับ Android ทั้งที่นี่หรือที่android.stackexchange.com
สตีเฟ่น Kitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.