CentOS7编译OpenJDK12、13

Posted by 移影残风 on April 9, 2019

根据openjdk官网的文档,基本上只需要下面几步就可以了。

1. 获取完整的源代码:

# 如果不知道那个软件包提供了hg命令,可以使用yum provides 查找
yum provides hg
yum install mercurial -y
# 最后的jdk12参数就是你想clone的目录,如果不存在的话会自动创建
hg clone http://hg.openjdk.java.net/jdk/jdk12 jdk12 

鉴于国内的访问速度,加上clone后的文件夹确实比较大(至少有1个多G),还是建议初次clone时使用一台国外的云主机,然后将文件夹打包后再下载到本地

2.安装 jdk11

openjdk或者Oracle-jdk都可以,这里我直接用的yum源里提供的openjdk

yum install java-11-openjdk-devel -y

3. 运行 configure:

bash configure

注意:如果你用的是解压版的jdk并且没有使用包管理器安装openjdk11,那么就需要加上–with-boot-jdk参数,后面跟你解压后的jdk目录,比如

bash configure --with-boot-jdk=/root/jdk-11.0.2

路径使用绝对路径,不要使用相对路径

如果出现类似下图的信息

只要按照红框处的提示,安装相关的依赖就行了

yum install autoconf -y

再次执行后…

提示缺少unzip,安装即可

yum install unzip -y

再次执行后…

提示缺少zip,安装即可

yum install zip -y

再次执行后…

提示缺少gcc,按照提示安装即可

yum groupinstall "Development Tools" -y

再次执行后…

提示缺少上面一堆依赖,按照提示安装即可

yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel -y

再次执行后…

提示缺少cups,按照提示安装即可

yum install cups-devel -y

再次执行后…

提示缺少fontconfig,按照提示安装即可

yum install fontconfig-devel -y

再次执行后…

提示缺少alsa,按照提示安装即可

yum install alsa-lib-devel -y

再次执行后,出现下图的信息就表示ok了,可以执行下一步了

整理了一下

yum groupinstall "Development Tools" -y
yum install autoconf unzip zip libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel cups-devel fontconfig-devel alsa-lib-devel -y

4. 运行 make:

make images

根据官方文档,make后面可以加上以下参数:

hotspot - Build all of hotspot (but only hotspot)  
hotspot-<variant> - Build just the specified jvm variant
images or product-images - Build the JDK image
docs or docs-image - Build the documentation image
test-image - Build the test image
all or all-images - Build all images (product, docs and test)
bootcycle-images - Build images twice, second time with newly built JDK (good for testing)
clean - Remove all files generated by make, but not those generated by configure
dist-clean - Remove all files, including configuration

慢慢等吧,具体等多长时间就看你机器的配置了,如果是虚拟机的话,根据官方文档,建议分配至少2G内存,cpu的话有多个核心就分配多少个吧,硬盘看个人需求,只是用来编译openjdk的话20G就已经够用了
可以在前面加一个time命令,这样编译结束后还能看到编译的总共花了多长时间。

time make images

我的笔记本的是I5-7300HQ的CPU,一共分配了4个核心,

在历时42分钟后终于编译完了。

5. 验证新构建的JDK:

./build/*/images/jdk/bin/java -version

编译jdk13 的步骤和上面的类似

clone最新的openjdk源码

# 最后的jdk-latest参数就是你想clone的目录,如果不存在的话会自动创建
hg clone http://hg.openjdk.java.net/jdk/jdk jdk-latest 

由于编译的是openjdk13,那么引导jdk就得用到我们刚刚编译好的openjdk12

bash configure --with-boot-jdk=/root/jdk12/build/linux-x86_64-server-release/images/jdk

运行 make:

make images

这次找了台学校的服务器来编译…

配置:

E5-2670 v2 40个核心

128G内存

果然,核心多就是任性啊

然后试了下实验室的windows台式机里面的wsl…

wsl用的是ubuntu 18.04的系统

机器配置:

i7 8700 6核12线程

32G内存

同上,先安装必要的依赖

sudo apt install -y autoconf make build-essential libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev libcups2-dev libfontconfig1-dev libasound2-dev

然后安装openjdk11,可以用软件源里的openjdk11

sudo apt install -y openjdk-11-jdk

或者用解压版的openjdk11,然后指定 –with-boot-jdk 参数

bash configure --with-boot-jdk=/home/aaa/jdk-11.0.2

虽然这台台式机的cpu核心要比那台服务器cpu的要少很多,不过因为它睿频能达到4.0GHz

以上,所以编译所花的时间也只是多了5分钟左右,然而还是能完爆我的笔记本…

定个小目标:以后有钱了就买个这样配置的服务器…