動かすのはラズパイでIoT的な物にしたいが、まずはMacで開始します。
Rust関連のインストール(やり方は公式ページなど参照)、
% rustc --version
rustc 1.71.0 (8ede3aae2 2023-07-12)
% cargo version
cargo 1.71.0 (cfd3bbd8f 2023-06-08)
% rustup --version // Rust tool chain, cargo(Rust's package manager)とは併用
rustup 1.26.0 (5af9b9484 2023-04-05)
cargo-editはcargoの拡張機能、単独のコマンドではない
% cargo install cargo-edit
% cargo install cross
クロス環境用にcrossをインストールしますが。本来的にはcargoはRustのパッケージ管理とビルドツール。crossはクロスコンパイル環境ですが、実はcrossはDockerにターゲットDockerイメージを展開してコンパイルするようになっています。
Intel Mac用のコンパイル(cargo build)と実行(cargo run)
コードは、
https://isehara-3lv.sakura.ne.jp/blog/2023/01/19/rustの基本的なsyntax/
% cargo run --target x86_64-apple-darwin
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/x86_64-apple-darwin/debug/rust`
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 10
内部的にはRosetta2使っているだろうから、Intel用のバイナリでもそのまま実行できます。もちろん実行ファイルを直接呼び出して
% ./target/x86_64-apple-darwin/debug/rust
も結果は同じ。Intel Macに転送して実行してもきちんと実行できました。
P.S. ラズパイ用のクロスコンパイルはエラーになる、追加の設定(Linker設定してないから)が要りそう。ネットの情報は古くてあまり参考になるものは少ない。
% cargo build --target thumbv6m-none-eabi
Compiling rust v0.1.0 (/Users/usamiryuuichi/rust)
error[E0463]: can't find crate for `std`
~~以下省略~~
admin