庄周梦蝶

生活、程序、未来

声明:本博客所有文章,未经允许,禁止转载。谢谢。

Mac JDK9 编译记

| Comments

闲来无事,尝试在本机编译下 JDK9 ,记录步骤如下。

准备

  • 安装 Mercurial: brew install mercurial,熟悉下 hg 基本命令
  • 获取源码:
1
2
3
hg clone http://hg.openjdk.java.net/jdk9/jdk9 jdk9
cd jdk9
bash ./get_source.sh

下载源码这个过程很漫长,压缩后都有 500 多M,建议找台国外的 VPS 获取源码压缩后再拷贝到本机。源码里的 READMEREADME-builds.html 仔细阅读下,描述了 openjdk 整个编译过程和项目结构。

  • 依赖软件安装:
1
2
3
GNU make >= 3.81
JDK 8
XCode 7.3

官方推荐是 Xcode 6.3,否则会有一些不兼容问题,不过因为 JDK9 分支本来就是在开发中,我后面简单在编译阶段先简单地将所有编译告警信息忽略。

后面编译的时候,发现还需要依赖 freetype,可以单独安装,也可以简单地安装 X11 支持。由于水果从 10.5 开始移除了 X11 的支持,为了继续运行 X11 程序,Apple搞了一个开源项目 XQuartz 来继续提供 X11 的支持。从官方网站 https://www.xquartz.org/ 下载 dmg,安装即可。

为了加快后续可能重复编译速度,支持下 --enable-ccache,安装下 ccache:

1
brew install ccache

编译

编译就是 configure 和 make 两步,写个 build.sh:

1
2
3
4
5
#!/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

XCode 7.3 会遇到比较多的兼容问题,很多告警会被当成错误退出,因此先禁止掉 -Werror 选项, configure 的时候加上 --disable-warnings-as-errors

整个编译过程在我的机器上挺快的,刷几个新闻就结束了。前面折腾这些编译告警的时候比较烦,索性先全部禁止了。

运行

进入 build/macosx-x86_64-normal-server-release/images/jdk 就可以看到一个标准的 JDK 结构:

1
2
3
4
$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)

声明:本博客所有文章,未经允许,禁止转载。谢谢。

jdk, 编译

« Clojure 1.8 Direct-Linking 分析 翻译:深入理解 Clojure Persistent Vectors 实现 Part 1 »

Comments