두 개의 “잠금 해제 된”장치, iPad mini 3 및 Galaxy Edge 6이 있는데, 둘 다 터미널과 최소한의 유닉스 명령 세트가 부여되었습니다. 두 장치 모두 arm64 프로세서가 있다고 생각했지만 실행했을 때
uname -a
두 장치에서 다음을 얻었습니다.
iPad mini 3의 경우 :
xxxxs-iPad:/var/mobile root# uname -a
Darwin xxxx-iPad 14.0.0 Darwin Kernel Version 14.0.0: Wed Jun 24 00:50:15 PDT 2015; root:xnu-2784.30.7-30/RELEASE_ARM64_S5L8960X iPad4, **arm64**, J85mAP
삼성 Galaxy s6 Edge :
u0_a203@zerolte:/ $ uname -a
Linux localhost 3.10.61-4497415 #1 SMP PREEMPT Thu Apr 9 15:06:40 KST 2015 **aarch64** GNU/Linux
내가 틀리지 않았다면 두 경우의 마지막 정보 인 J85mAP와 GNU / Linux는 펌웨어를 의미하고, 최종 정보 인 arm64와 aarch64는 프로세서를 의미합니다.
내 질문은 다음과 같습니다. “arm64″와 “aarch64″문자열은 동일하지 않지만 항상 arm64와 aarch64가 동일하다고 생각했습니다. (여기 질문에 arm64 태그를 넣을 때도 알려줍니다.)
그래서 그들은 정말로 동일합니까?
특히 두 타겟 모두에 대해 라이브러리를 교차 구축하는 경우 무엇을 걱정해야합니까? 사실, 저는 gcc 5.2.0을 염두에두고 있지만 더 낮은 버전도 염두에두고 있습니다. 그냥 지나갈 수 있을까요
-target=arm64
또는
-target=aarch64
내가 대상으로하는 장치에 따라 구성 할 나머지 옵션에 대해 걱정합니까?
편집 Hum, 성공하지 않고 이것을 다시 찾으십시오.
답변
AArch64는 Armv8-A 아키텍처 ( https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A )에 도입 된 64 비트 상태 입니다. Armv7-A 및 이전 32 비트 Arm 아키텍처와 역 호환되는 32 비트 상태를 AArch32라고합니다. 따라서 64 비트 ISA의 GNU 삼중 항은 aarch64입니다. Linux 커널 커뮤니티는 커널 포트를 aarch64가 아닌이 아키텍처 arm64로 호출하기로 선택했기 때문에 여기에서 arm64 사용의 일부가 유래되었습니다.
내가 아는 한 aarch64 용 Apple 백엔드는 arm64라고하는 반면 LLVM 커뮤니티에서 개발 한 백엔드는 aarch64 (64 비트 ISA의 표준 이름이므로)라고 불렀고 나중에 두 가지가 병합되었고 이제 백엔드는 aarch64라고합니다. .
따라서 AArch64와 ARM64는 같은 것을 참조합니다.
답변
ARM64는 Apple이, AARCH64는 다른 사람들, 특히 GNU / GCC가 만든 것으로 보입니다.
인터넷 검색 후 다음 링크를 찾았습니다.
LLVM 64 비트 ARM64 / AArch64 백엔드가 병합되었습니다.
따라서 iPad는 Apple이 LLVM을 사용하고 있으며 Android가 GNU GCC 툴체인을 사용하기 때문에 Edge는 AARCH64를 사용하므로 자체적으로 ARM64라고 부릅니다.