Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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!