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-ng의 samples를 보면 컴파일러를 빌드할 때 쓰인 설정파일들을 볼 수 있다. 설정파일과 설명을 비교해보면 컴파일러간 차이를 파악할 수 있을 것 같다.
Reply by Email