3行で説明
面倒なクロスコンパイル、なんとかしたいですよね。
そこでscriptを書きました。コマンドプロンプトに貼ってENTERで3分放置すればクロスコンパイル完了です。
curl.exe -L https://raw.githubusercontent.com/cat2151/wsl2-docker-mingw-hello/main/WSL2_docker_mingw_hello.bat --output WSL2_docker_mingw_hello.bat && WSL2_docker_mingw_hello.bat
この記事の対象読者
以下に興味のある方。何かの参考になれば幸いです。
- WSL2, Docker, Docker Hub, MinGW
- C/C++ソースコードをクロスコンパイルしてWindows用exeを作成
- Windowsでgcc
- Dockerなので環境を汚さないし、高速にビルド(10秒)
- GitHubからcurlしたscriptで非対話的にビルドを実行
このscriptは何を実現するの?
-
以下を自動化します :
- docker-mingw-w64 を Docker Hubから得る
- これはgcc系のC/C++ソースからWindows用exeをビルドできる仕組みです
- docker-mingw-w64 用の build.sh を得る
- ユーザーが任意に作れる build.sh の参考用に、hello worldを提供します
- hello worldをクロスコンパイルする
- これはWindowsで動作するexeです
- Dockerで動くUbuntu上でmingwによりクロスコンパイルされて出力されます
- これはWindowsで動作するexeです
- hello worldをWindows上で実行し、結果を得る
- 上記すべてのログを出力する
- docker-mingw-w64 を Docker Hubから得る
-
環境を汚さないため、手軽に扱えます。
-
コマンドプロンプトから1行のコマンドを実行するだけで自動ですべてが完了します。面倒な操作は不要です。
docker-mingw-w64とは?
Linuxコンテナ上でクロスコンパイルしてWindows用exeを作る仕組みです。
GitHub docker-mingw-w64
Docker Hub mingw-w64
Windowsで動かすには、コマンドのpwd部分を書き換える必要があります:
- PowerShell用
docker run --rm -ti -v "$($pwd.Path):/mnt" mmozeiko/mingw-w64 ./build.sh
- bat用
docker run --rm -ti -v %CD%:/mnt mmozeiko/mingw-w64 ./build.sh
- MSYS2/Cygwin用
docker run --rm -ti -v $(cygpath -w $(pwd)):/mnt mmozeiko/mingw-w64 ./build.sh
さらに詳しく
GitHubをご参照ください :
WSL2 docker mingw hello