LoginSignup
0
0

raspberry pi zero wで動かせるrustのプログラムをクロスコンパイルしてみる

Posted at

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を落として対処しました
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0