根据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分钟左右,然而还是能完爆我的笔记本…