링크 위주로 간략하게 정리한다.
1. ARM Infocenter에서 툴체인 받기
Windows에서 사용할 것이니 Windows (mingw-w64-i686) hosted cross compilers
항목에서 AArch32 target with hard float (arm-none-linux-gnueabihf)
항목을 선택했다. (라즈베리 파이 3B 기준)
Update: ARM GCC는 버전이 너무 높아서 호환이 안 되는 것인지 링킹 오류가 발생하였다. Linaro 툴체인을 사용하자. 2019.12 릴리즈(GCC 7.5)
Tip: 반디집 등의 프로그램은 심링크를 제대로 처리하지 못해 오류가 발생하는 것 같다. 직접 명령창에서 mingw64 등의 tar
명령어를 사용하는 것이 속 편하다.
2. rustup
타겟 추가하기
rustup target add aarch64-unknown-linux-gnu
musl
을 사용하는 OS라면 aarch64-unknown-linux-musl
을 사용한다.
3. 크로스컴파일 타겟에 대해 링커 지정하기
홈 디렉토리(대개 C:\Users\<username>
) 내의 .cargo/config
파일을 열고(없으면 새로 생성한다.)
[target.aarch64-unknown-linux-gnu]
linker = "<link>/<to>/<toolchain>/gcc-linaro-7.5.0-2019.12-i686-mingw32_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc.exe"
디렉토리 구분자로 \\
를 사용해도 된다. 백슬래시 두 개임에 유의.
4. 크로스컴파일
cargo build --target=aarch64-unknown-linux-gnu
target/aarch64-unknown-linux-gnu
폴더 안에 빌드 결과물이 생성된다.