Как я могу скомпилировать код 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.
получить RPi dev tools -
git clone https://github.com/raspberrypi/tools.git ~/pi-tools
получить компилятор rust из Mozilla git repo и добавить инструменты rpi в путь
export PATH=~/pi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:$PATH
ищите rusty-Pi dir на вашем доме
./configure --target=arm-unknown-linux-gnueabihf --prefix=$HOME/rusty-pi && make && make install
С учетом типа 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!