raspberry pi zero w
で動かせるrustのプログラムを以前作ろうとしていたのですが、色々つまづいたのでここに忘備録として残しておこうと思います
つまづいた点
- まず、raspberry pi上で動かすプログラムである以上、そこでビルドしようとするのは当然の考えです しかし、以下の理由で断念しました
- ビルドが落ちる点
- ビルドが処理が重すぎて落ちてしまい、正しくビルドまでできませんでした
- ビルドに時間がかかりすぎる点
- 上記の問題が解決しても、この問題のため、正しく動作しているかのチェックに時間がかかるため、ラズパイでのビルドをあきらめたこと
- ビルドが落ちる点
また、公式ドキュメントに記載されている方法でもビルドしようとしましたが、エラーの連続で、たくさんエラーを修正しましたが、ついに全く修正方法がわからないところに陥ってしまいました...
そこで、調べた結果crossというツールがあるようでした
crossを使うことで、簡単にビルドが通るらしいです
やってみましょう
まずインストールです
cargo install cross --git https://github.com/cross-rs/cross
その後ビルドしてみます...
cross build --target arm-unknown-linux-gnueabihf --release
動きました!
もちろんそれだけで動いたわけではありませんが、これでビルドに成功し、実際にラズパイ上で動くことを確認しました
他にやったこと
- OpenSSL系でエラーが出たので、rust実装のrustls-tlsにしてみる
- opensslの関係でうまくビルドできなかったため、rustls-tlsにすることで正しくビルドできるようになりました
- ライブラリをローカルに落とし、そのライブラリのCargo.tomlを編集する
- 使用しているライブラリがreqwestを使っていましたが、上記の理由でfeatures = ["rustls-tls"]を追記する必要があり、ローカルにcrateを落として対処しました