본문으로 건너뛰기
  1. Memo/

ARM GCC 크로스 컴파일러 종류 메모

·
컴파일러 ARM
작성자
hw5e
page.hw5e.cc

ARM 홈페이지의 GNU 툴체인 다운로드 링크에는 여러가지 종류의 툴체인이 있다.

일단 홈페이지에서 배포하고 있는 것은 저 5종류이다

이름 설명
arm-none-eabi arm32 베어메탈
arm-none-linux-gnueabihf arm32 리눅스, 하드웨어 부동소수점
aarch64-none-elf arm64 베어메탈
aarch64-none-linux-gnu arm64 리눅스
aarch64_be-none-linux-gnu arm64 리눅스 ,빅엔디안

앞부분은 호스트 뒷부분은 타겟

aarch64는 ARM64와 동일한 의미이다. hf 하드웨어 부동소수점, arm64는 반드시 hf이기 때문에 따로 붙지 않는다.

운영체제용과 베어메탈용의 대표적인 차이는 OS없는 펌웨어용은 동적 링크가 불가능하다는 점이라고 한다.(OS가 없으면 실행파일 하나만 실행되니 동적 링크가 의미가 없으니깐?)

arm64는 elf인데 arm은 abi인 이유가 그냥 명명 방식을 개정한 것이라고 한다. https://stackoverflow.com/questions/79105467/what-is-the-difference-between-aarch64-none-elf-and-arm-none-eabi

none 은 특정 타겟을 목적으로 하지 않는다는 의미이다
be나 eb가 붙으면 빅 엔디안

그밖에 다양한 종류의 arm 크로스 컴파일러가 있는데 gcc 크로스 컴파일러를 빌드하는 도구인 crosstool-ngsamples를 보면 컴파일러를 빌드할 때 쓰인 설정파일들을 볼 수 있다. 설정파일과 설명을 비교해보면 컴파일러간 차이를 파악할 수 있을 것 같다.

Reply by Email