Ubuntu/Debian ARM Cross compile 환경
이 글은 우분투, 리눅스 박스에서 GNU ARM Cross compiler 를 설치하고 관리하는 방법을 다루고 있다.
2018-05-17: sidebar.nav/linux 사용
{: .right-history}
ARM Cross compiler 설치
우분투/데비안 리눅스에서 제공하는 ARM Toolchain 환경은 Linaro 툴체인을 바탕으로 만들어져 있어서 두가지 버전으로 제공된다. Hard Float을 지원하는 버전과 그렇지 않은 버전이다.[^1]
(1) gcc-arm-linux-gnueabi
이 툴체인은 EABI가 gcc의 -mfloat-abi=soft
혹은 -mfloat-abi=softfp
옵션으로 생성한다는 의미이다.
(2) gcc-arm-linux-gnueabihf
이 툴체인은 EABI가 gcc -mfloat-abi=hard
옵션으로 생성한다는 의미이다. 이 의미는 Function Calling Convention이 double, float 사용시 FPU 레지스터에 올려서 전달하고 반환도 FPU 레지스터를 사용하게 된다는 것이다.
update-alternatives
플랫폼에 따른 gcc 환경을 변경하는 것은 update-alternatives
을 사용한다. 링크 update-alternatives에서 설명을 볼 수 있다.
ARM toolchain 설치
Ubuntu 14.04 에서 테스트했다. 그 이상 버전도 충분히 가능하다. 아래 도구를 설치하면 각 플랫폼에 대한 binutils–arm-linux-, gcc-arm-linux-, g++-arm-linux-, cpp-arm-linux- 도구가 설치된다.
Ubuntu14.04 에서 arm toolchain 설치
Coretex ARM
1 | sudo apt-get install gcc-arm-linux-gnueabihf |
ARM
1 | $ sudo apt-get install gcc-arm-linux-gnueabi |
Bare metal ARM
1 | $ sudo apt-get install gcc-arm-none-eabi |
필요하면 gfortran-arm-linux-, gobjc++-arm-linux- 등의 도구를 설치한다.
툴 체인 등록
여러 개발 보드의 cross compiler를 사용하기 위해서 해당 버전의 접두어를 사용해 보자. arm 을 사용하는 보드는 arm-linux-gnueabi[hf] 명칭을 사용한다.
1 | $ update-alternatives --list arm-linux-gnueabihf |
새로운 arm-linux-gnueabihf- 를 등록하자.
arm-linux-gnueabihf 등록하기
arm-linux-gnueabihf-gcc-4.8 관련 도구를 gcc 그룹에 등록하기
1 | sudo update-alternatives --install /usr/bin/arm-linux-gnueabihf-gcc arm-linux-gnueabihf /usr/bin/arm-linux-gnueabihf-gcc-4.8 50 \ |
arm-linux-gnueabihf-gcc-4.7 관련 도구를 gcc 그룹에 등록하기
1 | sudo update-alternatives --install /usr/bin/arm-linux-gnueabihf-gcc arm-linux-gnueabihf /usr/bin/arm-linux-gnueabihf-gcc-4.7 40 \ |
Raspberry pi Toolchain 등록하기
Raspberry pi 배포본에서 제공하는 arm gcc compile를 arm-linux-gnueabihf 그룹에 등록해 보자 [^2].
git으로 툴체인을 다운받아 ~/raspberrypi/tools 에 설치한다고 가정한다. [^3]
1 | git clone https://github.com/raspberrypi/tools ~/raspberrypi/tools |
다운로드한 tools 밑에 32bit, 64bit 버전의 컴파일러가 있다.
32bit 버전은 tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
64bit 버전: tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
다운로드 한 후에 적절한 위치에 놓고, 해당 경로를 확인한다.
1 | $ cd ~/rpi-arm/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/ |
64bit Raspberry Pi arm-linux-gnueabihf-gcc- 관련 도구를 gcc 그룹에 등록하기
1 | sudo update-alternatives --install /usr/bin/arm-linux-gnueabihf-gcc arm-linux-gnueabihf ~/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc-4.8.3 30 \ |