** クロスビルド環境に関して --- Oct 26, 2019 Kyuma Ohta 1.はじめに Common Source code Project(以下CSP)では、今までWindows向けビルドには Debian GNU/Linux上で動くMinGW-w64 クロスコンパイラツールチェーンを使 って来ました。 しかし、MinGW-w64でビルドされたプログラムは、遅い。と言うか、重い。 C++の例外処理(exception)について、32ビット環境に関しては、歴史的な 特許の問題があって、高速な処理法が使えない。と言う問題があるからです。 (64ビットビルドだと、特許に引っかからない方法が使われてる?) その他にもいくつか問題があったので、コンパイラツールチェーンをLLVM CLANG に切り替えてみました。が、MinGW-w64と共存させているとヘッダが派手に 衝突しまくるので、どうしたものか…と考えていたら、Docker環境でコン テナを作ってクロスビルド環境を作るという方法がされていたので、カスタ マイズしてみたのです。 2.具体的にはどうするか。 まず、Dockerを入れて下さい。Dockerは、GNU/LinuxなOSなら、ほぼ簡単に インストール出来ますし、WindowsでもWindows10ならば簡単に入るらしいで す。 MacやWindows8.1以前は、できるようですがよくわからない。 そして、Dockerhubから、以下のイメージ(※Ubuntu がアップデートしたら 変わるかも)をpullしてください。[1] $ docker pull artanejp/mingw-w64-llvm-ubuntu19.10:initial 数GB以上のディスクが必要になりますが、LLVM CLANGのクロス ツールチェインと、CSPをビルドするのに必要なライブラリ群が一気に 用意されます。 後は、このイメージを起動して、 adduser でユーザを作りsuでユーザを切り替え、docker コンテナ内から $ mkdir ~/src $ cd ~/src $ git pull https://github.com/Artanejp/common_source_project-fm7.git $ cd common_source_project-fm7/source/build-cmake $ cp buildvars_mingw_cross_win32.dat.tmpl buildvars_mingw_cross_win32.dat として、 buildvars_mingw_cross_win32.dat を適切に設定した上で、 $ ./config_build_cross_win32.sh VM名 とすれば、ビルドを始めるはずです。多分。 お楽しみを! K.Ohta [1] Dockerを作る時のスクリプトなどは、 https://github.com/Artanejp/llvm-mingw でメンテナンスをしています。 又、DockerHubの直接のページは、 https://cloud.docker.com/u/artanejp/repository/docker/artanejp/mingw-w64-llvm-ubuntu19.10 です。