Как я могу скомпилировать код Rust на Raspberry Pi 2?
Недавно я приобрел малиновый PI 2, и я хочу запустить программу Rust на нем.
Есть ли руководство/инструкции, как перекрестно компилировать программы Rust на Raspberry PI 2? Я слышал о запуске Rust на RPi или Arduino, хотя не недавно.
Я хочу, чтобы на Raspberry Pi 2. была реализована эквивалентная программа Rust Hello World
. Она не должна быть буквальной программой Hello World, просто такой же низкой сложности.
Ответы
Ответ 1
У нас ржавчина сейчас.
$ 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
Ответ 2
Компилятор Rust не распространяется как кросс-компилятор для Raspberry Pi, поэтому его необходимо скомпилировать как кросс-компилятор с инструментами rpi dev.
-
Получить инструменты rpi dev - git clone https://github.com/raspberrypi/tools.git ~/pi-tools
-
получить компилятор ржавчины из mozilla git repo и добавить инструменты rpi в путь export PATH=~/pi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:$PATH
-
Посмотрите на ржавый-пи-дир в своем доме ./configure --target=arm-unknown-linux-gnueabihf --prefix=$HOME/rusty-pi && make && make install
-
Учитывая helloworld.rs → % ~/pi-rust/bin/rustc --target=arm-unknown-linux-gnueabihf -C linker=arm-linux-gnueabihf-g++ helloworld.rs
Будет создан исполняемый файл.
Ответ 3
@kazhik answer будет работать для Raspberry Pi 2s и 3s (которые основаны на ARMv7/8), но не для Raspberry Pi 1s или нулей (которые основаны на ARMv6).
Проблема в том, что порт Debian/Ubuntu armhf
(и, следовательно, их пакет/компилятор/набор инструментов gcc-arm-linux-gnueabihf
) предназначается> = ARMv7.
К счастью, rustup gcc-arm-linux-gnueabihf
предназначается>> ARMv6 (с аппаратной плавающей точкой, которую поддерживают все Raspberry 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
):
[email protected]: $ cargo new --bin rpi-test
[email protected]: $ cd rpi-test
[email protected]: $ cargo build --target=arm-unknown-linux-gnueabihf
[email protected]: $ scp target/arm-unknown-linux-gnueabihf/debug/rpi-test [email protected]:
[email protected]: $ ssh [email protected]
[email protected]: $ ./rpi-test
Hello, world!