编译Open JDK源码
1.实验环境准备
操作系统:Ubuntu 18.04.1 LTS
编译JDK版本:OpenJDK12
1.1下载OpenJDK源码
前往官网自行下载
http://jdk.java.net/java-se-ri/12
进入页面后点击zip file下载对应源码压缩包
解压到任意目录
1.2下载安装gcc编译器
sudo apt-get install build-essential
验证安装:gcc –version,出现版本号说明验证成功
1.3 安装Bootstrap JDK
sudo apt-get install openjdk-11-jdk
假设要编译大版本号为N(这里是12)的JDK,我们还要另外准备一个大版本号至少为N-1的、已经编译好的JDK,这是因为OpenJDK由多个部分(HotSpot、JDK类库、JAXWS、JAXP……)构成,其中一部分(HotSpot)代码使用C、C++编写,而更多的代码则是使用Java语言来实现,因此编译这些Java代码就需要用到另一个编译期可用的JDK,官方称这个JDK为“Bootstrap JDK”。编译OpenJDK 12时,Bootstrap JDK必须使用JDK 11及之后的版本。
1.4 安装依赖库
工具 | 库名称 | 安装命令 |
---|---|---|
FreeType | The freeType Project | sudo apt-get install libfreetype6-dev |
CUPS | Common UNIX Printing System | sudo apt-get install libcups2-dev |
X11 | X Windows System | sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev |
AlSA | Advanced Linux sound Architecture | sudo apt-get install libasound2-dev |
libffi | Portable Foreign Function Interface Library | sudo apt-get install libffi-dev |
AutoConf | Extensible Package of M4 Macros | sudo apt-get install autoconf |
2.进行自动配置
进入jdk源码根目录执行命令:bash configure
configure命令承担了依赖项检查、参数配置和构建输出目录结构等多项职责,如果编译过程中需要的工具链或者依赖项有缺失,命令执行后将会得到明确的提示,并且给出该依赖的安装命令,我们只需根据提示再安装对应依赖即可。
3.开始进行全量编译
执行命令:make all
使用4核8G配置全量编译整个OpenJDK 12大概需近15分钟时间。
出现finished building代表编译完成,此时在“build/配置名称/jdk“目录下就可以看到完整的编译结果。
4.验证
进入jdk目录执行:./java -version