やっつけな日常(23) ラズパイ4に Rust言語処理系をインストール。野望?は広がる

Joseph Halfmoon

いろいろ試してみたい言語処理系が多数あります。つい数か月前からもGo言語の勉強始めたところです。しかし「年に新言語ひとつ」のペースではとても死ぬまでにカバーしきれない、というわけでペースアップと。今回新たにRust言語始めます。「何でもできる」言語みたいですが、食いつきポイントは「低レベル、組み込み」ができるらしい点。

※今回は、マニュアル通りに言語処理系をインストールし、動作確認するところまでです。インストール確認に使用したのは、Raspberry Pi 4 model B機(Arm Cortex-A72)です。Raspberry Pi OS<32bit版、Linux>のバージョンは以下に。version

Rust言語

Rust、「最近流行り」の言語じゃないかと思います。公式ホームページには日本語版もありです。

Rust(日本語ホームページ)

勿論、普通にLinuxやWindowsのPC上で走らせて開発に使える言語処理系なのですが、組み込み用のマイクロコントローラ(マイコン)に対してもクロス開発に使える部分がお好みです。今回インストールするターゲット機は、ラズパイ4です。ラズパイ4上でのセルフ開発に慣れたら、後でマイコンターゲットのクロス開発にも使ってみたい目論見。

インストール

さて、Rust処理系のインストールは、上記ホームページから辿ると出てくる以下のコマンドライン1行でOK。お手軽。

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

実際に走らせたところが以下に。ネットからダウンロードしたインストール用のスクリプトが走り、Rustで使用するツールチェーン等を実際にインストールしてくれるツールらしいRustupとか、パッケージマネージャであるCargoとか、次々にインストールしてくれますです。

startInstall

インストールスクリプトの終了付近が以下に。

endInstall

インストール直後にはRustのツール群にPATHが通っていないので、上記の末尾に書かれているとおり

$ source $HOEM/.cargo/env

するとPATHが通ります(.bashrcには追記されているのでシェルを開き直しても大丈夫。)

一応、rustc と cargo のバージョン確認すると以下でした。

$ rustc --version
rustc 1.62.0 (a8314ef7d 2022-06-27)

$ cargo --version
cargo 1.62.0 (a748cf5a3 2022-06-08)

マニュアル通りに、cargoを使って、新たなプロジェクトを作ってみます。適当なプロジェクト・ディレクトリ内で、以下のようにすると hello_cargoプロジェクトができます。なお、Rustの人は命名時には「スネークケース」を強く推奨しているみたいです。Rustらしいコード書くときには注意しないと。

createCargoProj

上記の Cargo.tomlというファイルが、このプロジェクトの設定ファイルらしいです。tomlのtはトムさんのTらしいです。ソースファイルは src 配下に「hello_world」ができてます。

さて、作成したプロジェクトディレクトリ(.tomlファイルがあるところ)に入って、ビルドしてみると以下のようです。

cargoBuild

上記により新たに target ディレクトリができ、今回はその下の debug ディレクトリ内にオブジェクトファイルができてます。なお、release 用のオプションをつけてビルドすれば、リリース用にビルドされたオブジェクトが release ディレクトリにできるらしいです(やってないケド。)

実行したところが以下に。Hello, world!してますね。

HelloWorld

ラズパイ4上での操作なので、WindowsPC上のVScodeからリモート接続してソースの編集も勿論可能。冒頭のアイキャッチ画像の通り。

しかしね~、Rust、結構カッコイイのだけれど、他の言語処理系にあまりないコンセプトも多いです。ちゃんと理解するためにはドキュメント読まねばなりますまいな。勿論ドキュメント充実(公式でなかったりしますが日本語版のドキュメントを用意してくださっている方もあり、大変ありがたいことです。)

分量多いぜ~、死ぬまでに読み終わるのか?

やっつけな日常(23) ラズパイ、IO Expander制御、入力モード追加 へ戻る

やっつけな日常(24) Rustに入ればRustに従え、メモリの管理、独特、ども安全かも へ進む