自分用の備忘録

VimとかJSとか。やったことのメモ。自分のため。

Rustでクロスコンパイルする

Rustの環境を作ってcargo build --releaseすると、デフォはその環境に合わせた実行ファイルができます。
たとえば、Windowsでやったら.exeが吐き出されます。
他環境に配るのに、毎回その環境でビルドするのも面倒すぎるので、何かしら方法は・・・。

やり方

環境はM2で、そこからMac(Intel)用とWindows用に。。。という感じで考えてください。

ターゲットを追加してやる必要があるので、まずは一覧を見ましょう。
ターゲットの一覧は以下のコマンドで見ることができます。

$ rustup target list

次にターゲットを追加します。
Windows用にはmingw-w64がいるのでこれも入れます。

$ rustup target add x86_64-apple-darwin
$ brew install mingw-w64
$ rustup target add x86_64-pc-windows-gnu

実際にビルドするときには--targetで入れたやつを指定すればOK。

$ cargo build --target x86_64_apple-darwin --release
$ cargo build --target x86_64_pc-windows-gnu --release

これでOKです。

そんなことより、cross使えば楽そう。
(target addの手間が省けそう)

ひとまず、これで配れるようにはなりました。