WSL2 + Docker + MinGWで、自動でhello worldをWindows用にクロスコンパイルする方法
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によりクロスコンパイルされて出力されます
- hello worldをWindows上で実行し、結果を得る
- 上記すべてのログを出力する
-
環境を汚さないため、手軽に扱えます。
-
コマンドプロンプトから1行のコマンドを実行するだけで自動ですべてが完了します。面倒な操作は不要です。
docker-mingw-w64とは?
以下を自動化します :
- 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上で実行し、結果を得る
- 上記すべてのログを出力する
環境を汚さないため、手軽に扱えます。
コマンドプロンプトから1行のコマンドを実行するだけで自動ですべてが完了します。面倒な操作は不要です。
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
関連記事
Author And Source
この問題について(WSL2 + Docker + MinGWで、自動でhello worldをWindows用にクロスコンパイルする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/cat2151/items/8ae0969204f1a38e1b4d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .