✨
M1 MacBook で「実践Rust入門」
実践Rust入門のサンプルコードをM1 MacBookで動かすためのあれやこれやです。
動作環境
> uname -a
Darwin M1-MacBook-Pro-16-2021.local 21.1.0 Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:01 PDT 2021; root:xnu-8019.41.5~1/RELEASE_ARM64_T6000 arm64
> brew --version
Homebrew 3.3.6
Homebrew/homebrew-core (git revision c8923cc5c13; last commit 2021-12-04)
Homebrew/homebrew-cask (git revision 9ea04cf41c; last commit 2021-12-04)
> cargo --version
cargo 1.56.0 (4ed5d137b 2021-10-04)
> rustc --version
rustc 1.56.1 (59eed8a2a 2021-11-01)
> lldb --version
lldb-1300.0.32.4
Swift version 5.5.1-dev
> docker --version
Docker version 20.10.10, build b485636
11章 Webアプリケーション、DB接続
cargo add
が使えない
location 2352に「インストールしてみましょう」とあるが読み飛ばしていると後でハマる。
cargo install cargo-edit
docker-compose.yml
書式が変わったようで、全体を services:
セクションに含めるようにしないといけない。(動作確認したファイルはこちら
libpq
M1 macOSにはlibpqが含まれていないようなので brew install libpq
でインストール。
cargo build
などでは RUSTFLAGS
環境変数にてライブラリの場所を指定する必要がある。
RUSTFLAGS='-L /opt/homebrew/opt/libpq/lib
12章 - FFI
ローカルディレクトリへの Onigmo のインストール
sudo make install
をやりたくなかったので、./configure --prefix="${PWD}"
としてローカルにインストールしました。(ビルドスクリプト)
onigmo-sys
のビルド
build.rs
内部で .clang_arg()
でヘッダファイルの場所を指定する必要があります。
また、手元の環境では Stable_1_28
が定義されておらずエラーになりましたが、代わりに1_20や1_27でビルドできました。
fn main() {
println!("cargo:rustc-link-lib=onigmo");
let bindings = bindgen::Builder::default()
.header("wrapper.h")
+ .clang_arg("-I../../onigmo/include")
- .rust_target(bindgen::RustTarget::Stable_1_28)
+ .rust_target(bindgen::RustTarget::Stable_1_27)
onigmo
のビルド
Rustラッパ ビルドでは RUSTFLAGS
実行時には DYLD_LIBRARY_PATH
環境変数でOnigmoのインストール場所を教えてあげる必要があります。
例:
export DYLD_LIBRARY_PATH="${PWD}/../../onigmo/lib"
export RUSTFLAGS="-L${PWD}/../../onigmo/lib"
cargo run --example simple
Discussion