Windows 上で Windows Subsystem for Linux (WSL) を使用して OpenJDK 14 の Windows バイナリをビルドする方法をまとめます。
やりがちですが、Windows Subsystem for Linux (WSL)側のUbuntu 側で hg するのは必須ではありません。(やった)
Windows側で好きな git クライアントがあればそれを使ってダウンロードしても大丈夫です。
Windows では環境変数とかもやらなくて大丈夫です。
全体の手順は以下のとおり。
- Windows の環境構築
- Windows Subsystem for Linux (WSL) 上の Ubuntu の環境構築
- ソースをダウンロード
- Windows Subsystem for Linux (WSL) 上の Ubuntu 上でビルド
Windows の環境構築
OpenJDK14をビルドするためにWindowsでインストールする物は以下の4つです。
- Visual Studio Community
- Windows Subsystem for Linux (今回はUbuntu 18.04 LTS)
- Boot JDK (今回はOracle OpenJDK 12)
- Mercurialクライアント
Visual Studio Community
以下の URL からVisual Studio Community 2017をダウンロードしてインストールします。
以前の Visual Studio ソフトウェアのダウンロード | Visual Studio - Visual Studio
最初は何もバイナリがありませんでしたが、ログインしたらダウンロードできるようになりました。
今回はVisual Studio Community 2017 (version 15.9)
を使いました。
最低限必要なコンポーネントは分からなかったのでC++によるデスクトップ開発
を入れています。
Windows Subsystem for Linux (WSL)
Windows Subsystem for Linux は Ubuntu 18.04 LTS を入れています。Microsoft Storeを開いてインストールします。
起動してみて以下のエラーが出るようでしたら、Windows Subsystem for Linux の機能が有効化されていません。
Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007019e The Windows Subsystem for Linux optional component is not enabled. Please enable it and try again. See https://aka.ms/wslinstall for details. Press any key to continue...
Windows の機能の有効化または無効化
で以下のようになっていると思いますのでチェックを付けて有効にしてください。
Boot JDK
Boot 用に使う JDK をインストールします。インストールするのはただのJDKです。Oracle OpenJDK の 12.0.2 を入れました。普通に入れるとProgram Files
以下にインストールされますが、空白があるとなんか怖いなと思ってc:\Users\xxxx\develop\jdk-12.0.2
にインストールしました。
※注:Windows版のJDKが必要です。
インストール後はこんな感じです。
C:\Users\xxxx\develop\jdk-12.0.2>dir /B bin conf include jmods legal lib release
Mercurial クライアント
Mercurial のクライアントはお好きな物を使ってください。TortoiseHgを使いました。
Ubuntu 18.04 上で Mercurial を使う場合には以下のようにしてインストールします。
sudo add-apt-repository ppa:mercurial-ppa/releases sudo apt install mercurial
Windows Subsystem for Linux 上の Ubuntu の環境構築
以下の4つをインストールします。
- zip
- unzip
- autoconf
- make
sudo apt-get install zip unzip autoconf make
ソースをダウンロード
ソースのダウンロードは Windows 上でもWindows Subsystem for Linux 上でも大丈夫です。 Windows Subsystem for Linux 側でダウンロードして、ソースをWindowsのIDEで修正したり見る場合には Windows から見えるパス上にダウンロードすることを忘れないでください。
以下は Windows 上でダウンロードします。
適当なディレクトリでMercurialクライアントを使ってhttp://hg.openjdk.java.net/jdk/jdk
からクローンします。hgコマンドでC:\Users\xxxx\develop
ディレクトリへクローンする場合は、コマンドプロンプトで以下のコマンドを実行します。
cd C:\Users\xxxx\develop hg clone http://hg.openjdk.java.net/jdk/jdk
Windows Subsystem for Linux 上の Ubuntu でビルド
ビルドは Windows Subsystem for Linux (WSL) 上の Ubuntu でやります。configure
では--with-boot-jdk
では Windows へインストールしたJDKのパスを指定します。C:\
のマウントポイントは/mnt/c/
なので適宜指定してください。
gtest のコンパイルで失敗するので --disable-hotspot-gtest
を付けてgtest は無効化します。
以下は Slow Debug モードでのビルドです。
configure
が終わったらmake images
でビルドしましょう。
bash configure --with-boot-jdk=/mnt/c/Users/xxxx/develop/jdk-12.0.2 --enable-debug --with-native-debug-symbols=internal --disable-hotspot-gtest make images
これで、Windows Subsystem for Linux (WSL) 上の Ubuntu を使って Windows 用のバイナリをビルドできたはずです。