🦀

RustでクロスコンパイルにつまずいたときはOpenSSLでなくRustlsを使うといいかもしれない

2024/06/28に公開

背景

Rust製のDiscord BOTをRaspberry Pi Zero 2 W向けにCrossを使ってクロスコンパイルしようとした際、OpenSSL周りでエラーが発生し、コンパイルが進まない問題に直面しました。

問題

reqwestクレートではデフォルトでOpenSSLを使用しますが、これがCrossでのクロスコンパイル時に問題を引き起こすようです。すでに同様の問題が報告されており(例: cross-rs/cross#400)、それはCrossでのOpenSSLのサポートが打ち切られたことに端を発するようです(cross-rs/cross#229)。

解決策

reqwestクレートはOpenSSLの代わりにRustlsを使用することができます。Rustlsは純粋なRustで書かれたTLSライブラリで、OpenSSLの代替としてOpenSSLのサポート終了後の多くのCrossユーザーに利用されています。

自分の場合はCargo.tomlファイルを編集し、reqwestの依存関係にrustls-tlsを追加しただけで無事クロスコンパイルを通すことができました。

AI声づくり技術研究会

Discussion