Mac JDK9 编译记 - 庄周梦蝶
AdrianCummi
9年前
<h2>准备</h2> <ul> <li>安装 Mercurial: <code>brew install mercurial</code>,熟悉下 hg <a href="/misc/goto?guid=4959672785827795330">基本命令</a>。</li> <li>获取源码:</li> </ul> <pre> <code>hg clone http://hg.openjdk.java.net/jdk9/jdk9 jdk9 cd jdk9 bash ./get_source.sh</code></pre> <p> </p> <p>下载源码这个过程很漫长,压缩后都有 500 多M,建议找台国外的 VPS 获取源码压缩后再拷贝到本机。源码里的 <code>README</code> 和 <code>README-builds.html</code> 仔细阅读下,描述了 openjdk 整个编译过程和项目结构。</p> <ul> <li>依赖软件安装:</li> </ul> <pre> <code>GNU make >= 3.81 JDK 8 XCode 7.3 </code></pre> <p>官方推荐是 Xcode 6.3,否则会有一些不兼容问题,不过因为 JDK9 分支本来就是在开发中,我后面简单在编译阶段先简单地将所有编译告警信息忽略。</p> <p>后面编译的时候,发现还需要依赖 <a href="/misc/goto?guid=4958524357013125384">freetype</a>,可以单独安装,也可以简单地安装 X11 支持。由于水果从 10.5 开始移除了 X11 的支持,为了继续运行 X11 程序,Apple搞了一个开源项目 XQuartz 来继续提供 X11 的支持。从官方网站 <a href="/misc/goto?guid=4959672785949929285">https://www.xquartz.org/</a> 下载 dmg,安装即可。</p> <p>为了加快后续可能重复编译速度,支持下 <code>--enable-ccache</code>,安装下 ccache:</p> <pre> <code>brew install ccache</code></pre> <h2>编译</h2> <p>编译就是 configure 和 make 两步,写个 build.sh:</p> <pre> <code>#!/bin/bash bash ./configure --with-freetype-include=/usr/X11/include/freetype2 --with-freetype-lib=/usr/X11/lib \ --enable-ccache --disable-warnings-as-errors make clean make all</code></pre> <p>XCode 7.3 会遇到比较多的兼容问题,很多告警会被当成错误退出,因此先禁止掉 -Werror 选项, configure 的时候加上 <code>--disable-warnings-as-errors</code>。</p> <p>整个编译过程在我的机器上挺快的,刷几个新闻就结束了。前面折腾这些编译告警的时候比较烦,索性先全部禁止了。</p> <h2>运行</h2> <p>进入</p> <p><code>build/macosx-x86_64-normal-server-release/images/jdk</code> 就可以看到一个标准的 JDK 结构:</p> <pre> <code>$bin/java -version openjdk version "9-internal" OpenJDK Runtime Environment (build 9-internal+0-2016-05-08-160141.dennis.jdk9) OpenJDK 64-Bit Server VM (build 9-internal+0-2016-05-08-160141.dennis.jdk9, mixed mode)</code></pre> <p> </p> <p>来自:http://blog.fnil.net/blog/6df269d130f489e386b9e23174d45f10/</p>