1.6 实战:自己编译JDK 1.6.3 构建编译环境

在MacOS[^1]和Linux上构建OpenJDK编译环境相对简单,对于MacOS,需要MacOS X 10.13版本以 上,并安装好最新版本的XCode和Command Line Tools for XCode(在Apple Developer网站[^2]上可以免 费下载),这两个SDK提供了OpenJDK所需的CLang编译器以及Makefile中用到的其他外部命令。

对于Linux系统,要准备的依赖与MacOS类似,在MacOS中CLang编译器来源于XCode SDK,而 Ubuntu里用户可以自行选择安装GCC或CLang来进行编译,但必须确保最低的版本为GCC 4.8或者 CLang 3.2以上,官方推荐使用GCC 7.8或者CLang 9.1来完成编译。在Ubuntu系统上安装GCC的命令 为:

1
sudo apt-get install build-essential

在编译过程中需要依赖FreeType、CUPS等若干第三方库,OpenJDK全部的依赖库已在表1-1中列 出,读者可执行相应的安装命令完成安装。

image-20210915204639903

最后,假设要编译大版本号为N的JDK,我们还要另外准备一个大版本号至少为N-1的、已经编译 好的JDK,这是因为OpenJDK由多个部分(HotSpot、JDK类库、JAXWS、JAXP……)构成,其中一 部分(HotSpot)代码使用C、C++编写,而更多的代码则是使用Java语言来实现,因此编译这些Java代 码就需要用到另一个编译期可用的JDK,官方称这个JDK为“Bootstrap JDK”。编译OpenJDK 12时, Bootstrap JDK必须使用JDK 11及之后的版本。在Ubuntu中使用以下命令安装OpenJDK 11:

1
sudo apt-get install openjdk-11-jdk

[^1]: 注意,在OpenJDK 7u4和之后的版本才能编译出MacOS系统下的JDK包,之前的版本虽然在源码和 编译脚本中也包含了MacOS目录,但是尚未完善。
[^2]: https://developer.apple.com/。