#chiroito ’s blog

Java を中心とした趣味の技術について

Windows Subsystem for Linux を使って OpenJDK をビルド

OpenJDK 14 の Windows バイナリをビルドする方法をまとめます。

やりがちですが、Ubuntu 側で hg する必要はありません。(やった)
Windows では環境変数とかもやらなくて大丈夫です。

全体の手順は以下のとおり。

  1. Windows の環境構築
  2. Ubuntu (WSL) の環境構築
  3. Windowsでソースをダウンロード
  4. 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++によるデスクトップ開発を入れています。 f:id:chiroito:20190727172428p:plain

Windows Subsystem for Linux

Windows Subsystem for Linux は Ubuntu 18.04 LTS を入れています。Microsoft Storeを開いてインストールします。 f:id:chiroito:20190727172749p:plain

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 の環境構築

以下の4つをインストールします。

  • zip
  • unzip
  • autoconf
  • make
sudo apt-get install zip unzip autoconf make

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

ビルド

ビルドは 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