Как я могу скомпилировать код Rust для запуска на Raspberry Pi 2?

недавно я приобрел Raspberry PI 2, и я хочу запустить на нем программу Rust.

есть ли руководство/инструкции, как скомпилировать программы Rust на Raspberry PI 2? Я слышал о запуске Rust на RPi или Arduino, хотя и не в последнее время.

Я хочу Hello World эквивалентная программа Rust, работающая на Raspberry Pi 2. Это не обязательно должна быть буквальная программа Hello World, просто что-то подобное низкой сложности.

3 ответов


у нас есть rustup сейчас.

$ rustup target add arm-unknown-linux-gnueabihf
$ sudo apt-get install gcc-arm-linux-gnueabihf
$ echo '[target.arm-unknown-linux-gnueabihf]' >> ~/.cargo/config
$ echo 'linker = "arm-linux-gnueabihf-gcc"' >> ~/.cargo/config
$ cd <project dir>
$ cargo build --target=arm-unknown-linux-gnueabihf

компилятор Rust не распространяется как кросс-компилятор для Raspberry Pi, поэтому он должен быть скомпилирован как кросс-компилятор с инструментами RPi dev.

  1. получить RPi dev tools -git clone https://github.com/raspberrypi/tools.git ~/pi-tools

  2. получить компилятор rust из Mozilla git repo и добавить инструменты rpi в путь export PATH=~/pi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:$PATH

  3. ищите rusty-Pi dir на вашем доме ./configure --target=arm-unknown-linux-gnueabihf --prefix=$HOME/rusty-pi && make && make install

  4. С учетом типа HelloWorld.РС -> % ~/pi-rust/bin/rustc --target=arm-unknown-linux-gnueabihf -C linker=arm-linux-gnueabihf-g++ helloworld.rs

Он будет производить исполняемый файл.


@kazhik это будет работать для Raspberry Pi 2s и 3s (которые являются ARMv7 / 8 на основе), но не для Raspberry Pi 1s или нулей (которые являются ARMv6 на основе).

проблема в том, что Debian / Ubuntu armhf порт (и таким образом их gcc-arm-linux-gnueabihf пакет / компилятор/ toolchain) цели >= ARMv7 с.

к счастью, rustup это gcc-arm-linux-gnueabihf задачи >= ARMv6 нет (С аппаратной плавающей запятой, которая все малина Pis поддержка), поэтому все, что нужно, это правильный компоновщик. Фонд Raspberry Pi предоставляет один из тех, в их инструменты репозиторий.

собирая его вместе, следующие шаги могут быть использованы для кросс-компиляции двоичного файла Rust, который работает на всех Raspberry Pis:

$ rustup target add arm-unknown-linux-gnueabihf
$ git clone --depth=1 https://github.com/raspberrypi/tools raspberrypi-tools
$ echo "[target.arm-unknown-linux-gnueabihf]" >> ~/.cargo/config
$ echo "linker = \"$(pwd)/raspberrypi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc\"" >> ~/.cargo/config

для тестирования кросс-компилятора (при условии, что Pi запущен и доступен с raspberrypi хоста):

cpick@devhost:  $ cargo new --bin rpi-test
cpick@devhost:  $ cd rpi-test
cpick@devhost:  $ cargo build --target=arm-unknown-linux-gnueabihf
cpick@devhost:  $ scp target/arm-unknown-linux-gnueabihf/debug/rpi-test pi@raspberrypi:
cpick@devhost:  $ ssh pi@raspberrypi
pi@raspberrypi: $ ./rpi-test
Hello, world!