FreeBSD14でRustのビルド環境を整える
Rustのビルド環境を構築しているときの覚書。
Gemini 3 Pro Previewと対話。
環境: FreeBSD 14.3-RELEASE-p8 arm64
1. Rustをインストール
ARM64の環境ではrustupは提供されていない。
pkg経由で検索。
# pkg search rust
Rust開発支援ツール
- rust-analyzer: Rust言語用の「言語サーバー(LSP)」。
- rust-mode: テキストエディタ Emacs 用のプラグイン。
- rust-script: Rustのコードを、PythonやShellスクリプトのように「コンパイル手順なしで」実行できるようにするツール。
C言語連携ツール(高度な開発用)
- rust-bindgen-cli: C言語(および一部C++)のヘッダーファイル(.h)を読み込み、Rustから呼び出せるようにするためのバインディングコード(ラッパー)を自動生成するツール
- rust-cbindgen: 上記とは逆で、RustのコードからC言語用のヘッダーファイル(.h)を生成するツール
ユーティリティ(Rust製コマンド)
- rust-coreutils: GNU coreutils(ls, cp, mv, cat など)をRust言語で書き直すプロジェクト(uutils)の成果物。通常はインストール不要。
- rust-findutils: GNU findutils(find, xargs, locate)をRust言語で書き直したもの。通常はインストール不要。
ビルドするだけなので、rustだけインストール。
# pkg install rust
確認。
# rustc --version
rustc 1.92.0 (ded5c06cf 2025-12-08) (built from a source tarball)
# cargo --version
cargo 1.92.0 (344c4567c 2025-10-21) (built from a source tarball)
2.Rustツールの解説
コンパイラ・基本ツール
- rustc: Rustコンパイラ本体。
通常は cargo build や cargo run コマンドを実行すると、裏側でこの rustc が自動的に実行される。 - rustfmt: コードフォーマッター(整形ツール)。
プロジェクトディレクトリで cargo fmt と打つと、裏側でこれが動き、全ファイルを整形してくれる。 - rustdoc: ドキュメント生成ツール。
cargo doc --open と打つと、裏側でこれが動き、ドキュメントを生成してブラウザで開いてくれる。
デバッガ(ラッパーコマンド)
- rust-gdb: GNU Debugger (GDB) のRust用ラッパー。
FreeBSDではシステム標準のデバッガとして lldb が好まれる傾向がありますが、GDBに慣れているならこちらを使います。 - rust-lldb: LLVM Debugger (LLDB) のRust用ラッパー。
FreeBSD(特にarm64環境)はLLVM/Clangベースのシステムなので、デバッグには こちら(rust-lldb)を使う方が相性が良い 場合が多い。 - rust-gdbgui: GDBのGUIフロントエンド(ブラウザベースのデバッガ)をRust用に起動するもの。
実際に使うには、別途 gdbgui というPythonツールなどがインストールされている必要がある場合がある。
開発者が直接コマンドラインに入力するのは、ほとんどの場合 cargo コマンドだけ。
3. cargoコマンド
cargo は Rust の開発における司令塔のようなツール。
cargo
Rust開発の統合マネージャー。
開発に必要なこと(プロジェクト作成、ライブラリのダウンロード、ビルド、テスト、実行)のほぼ全てをこのコマンド一つで行う。
よく使うコマンド
- cargo new プロジェクト名: 新しいプロジェクトを作成
- cargo run: ビルドして実行
- cargo build: ビルドのみ行う(target/ フォルダに生成)
- cargo check: コンパイルできるかチェックだけ行う(高速なので頻繁に使う)
- cargo test: テストコードを実行
cargo-fmt
コードフォーマッター(整形ツール)の実体。
ソースコードの書き方(インデント、スペース、改行など)を Rust の標準ルールに合わせて自動的に綺麗にしてくれる。
直接 cargo-fmt と打つのではなく、以下のように実行する。
# cargo fmt
cargo-clippy
高機能なリンター(静的解析ツール)の実体。
コンパイルエラーにはならないけれど、「書き方が悪い」「バグの元になる」「もっと効率的に書ける」といった箇所を指摘してくれる。
直接 cargo-clippy と打つのではなく、以下のように実行する。
# cargo clippy