본문 바로가기

컴퓨터/OS

[MAC] Rust & ARM 크로스컴파일 툴체인 설치

반응형

계획상 Rust를 사용해서 ARM 프로그램을 작성하는게 이번 방학 목표이기 때문에

맥에 Rust와 크로스컴파일용 툴체인을 깔아주도록 합니다.

www.rust-lang.org/tools/install

 

Install Rust

A language empowering everyone to build reliable and efficient software.

www.rust-lang.org

 공식홈페이지에 들어가면 설치하는 법을 볼수있습니다.

쉘파일 다운받아서 쉽게 사용가능합니다.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

위 명령어 입력해주고 

배시프로파일에  ~/.cargo/bin 환경변수 등록해주면 Rust 설치는 끝납니다.

rustc --version 명령으로 정상 설치 확인해줍시다.

======================================================================================================Rust ARM 크로스컴파일 툴체인 설치

github.com/japaric/rust-cross

 

japaric/rust-cross

Everything you need to know about cross compiling Rust programs! - japaric/rust-cross

github.com

이 쪽 깃허브 참고해서 설치해주었습니다.

하지만 저는 arm-v7 명령어 셋에 none - eabi 기반으로 크로스 컴파일 할 예정이기 때문에 설정을 살짝 바꿔줍시다.

sigmaris.info/blog/2019/02/cross-compiling-rust-on-mac-os-for-an-arm-linux-router/

 

Cross compiling Rust on Mac OS for an ARM Linux router - sigmaris.info

Wanting to compile a small program I’d written in Rust to run on my home router, I found this guide to cross compilation of Rust code. The router is a Netgear R7000 with an ARM processor, running FreshTomato, a distribution of Linux for ARM and MIPS arch

sigmaris.info

rustup의 타겟 목록은 이쪽에서 확인해줬습니다.

rustup target list

이 명령어로 타겟리스트를 볼 수 있습니다.

저는 cortex-a7 이 장착된 라즈베리파이2와 a7의 qemu환경용으로 개발하고 싶기때문에 적당한 목록을 뒤져봅시다.

v7 을 키워드로 grep 해보니 여러개가 나오네요

찾아보니까 armv7a = a시리즈, armv7r = r 시리즈 인거같습니다. 

armv7a-none-eabi 기준으로 맞춰주고 안된다 싶으면 바꿔줘야 할 거 같습니다.

크로스 컴파일은 또 처음이라...

rustup target add armv7a-none-eabi

rustup 설정을 추가해줍시다.

[target.armv7a-none-eabi]
linker = "arm-none-eabi-gcc"

cargo 폴더에 config파일을 만들어 줍시다.

예 뭐... 한번에 성공하는게 쉽지않죠... 

target이 설치되지 않았다고 하네요 아까한건 뭐였을까요.

============================================

note: 만 본 저의 실책이었네요 ㅋㅋ

소스에 #![no_std] 옵션 먹이면 해당 오류는 사라집니다. 일단 컴파일 과정은 정상적으로 되는것 같습니다.

나머지는 Rust를 잘 사용하면 될거같네요