Mac编译OpenJDK

首先确定要使用的JDK版本,由于jdk8已经发布很久了,所以选择OpenJDK8u。

获取源码有两种方式。一是通过Mercurial代码版本管理工具从Repository中直接取得源码(Repository地址:http://hg.openjdk.java.net/jdk8u/jdk8u),这是最直接的方式,从版本管理中看变更轨迹比看什么Release Note都来得实在,不过坏处自然是太麻烦了一些,尤其是Mercurial远不如SVN、ClearCase或CVS之类的版本控制工具那样普及。另外一种就是直接下载官方打包好的源码包了,可以从Source Releases页面(地址:http://download.java.net/openjdk/jdk7/)取得打包好的源码,一般来说大概一个月左右会更新一次,虽然不够及时,但的确方便了许多。

由于我们选择使用OpenJDK8u,无法使用上面提到的第二种方式,所以只能从hg库中下载源码。

下载过程如下:
1.安装Mercurial。使用下面的命令进行安装。
[shell]$ brew install mercurial[/shell]
2.下载源码。使用下面的命令下载源码。

1
2
3
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev
cd jdk8u-dev
bash ./get_source.sh

3.接下来就开始着手编译JDK了,按照README-builds.html的描述,需要首先运行
[shell]bash ./configure[/shell]
但是在这一步走了很多弯路。首先我把系统升级到了10.10,然后Xcode也装了最新的6.1.1,但是在运行中发现需要Xcode4,Xcode6.1.1不行;那就装Xcode4,发现Xcode4在10.10上跑的不好,决定把系统将回10.8;系统降回10.8后安装了Xcode4.6.3,这时候Xcode没有问题了。但是还是会报一个错误如下:

1
could not find freetype!

但是我确定已经装了freetype,而且在README-builds.html里对Mac的要求中也没有提到freetype,最后把命令改为如下:

1
bash ./configure --with-target-bits=64 --with-freetype-include=/usr/local/include/freetype2 --with-freetype-lib=/usr/local/Cellar/freetype/2.5.5/lib

终于跑通了!!在此期间还安装了XQuartz,不知道有没有作用。
4.运行
make all
编译成功的结果如下: