根据openjdk官网的文档,基本上只需要下面几步就可以了。
1. 获取完整的源代码:
1 | # 如果不知道那个软件包提供了hg命令,可以使用yum provides 查找 |
鉴于国内的访问速度,加上clone后的文件夹确实比较大(至少有1个多G),还是建议初次clone时使用一台国外的云主机,然后将文件夹打包后再下载到本地
2.安装 jdk11
openjdk或者Oracle-jdk都可以,这里我直接用的yum源里提供的openjdk1
yum install java-11-openjdk-devel -y
3. 运行 configure:
1 | bash configure |
注意:如果你用的是解压版的jdk并且没有使用包管理器安装openjdk11,那么就需要加上–with-boot-jdk参数,后面跟你解压后的jdk目录,比如1
bash configure --with-boot-jdk=/root/jdk-11.0.2
路径使用绝对路径,不要使用相对路径
如果出现类似下图的信息
只要按照红框处的提示,安装相关的依赖就行了1
yum install autoconf -y
再次执行后…
提示缺少unzip,安装即可1
yum install unzip -y
再次执行后…
提示缺少zip,安装即可
1 | yum install zip -y |
再次执行后…
提示缺少gcc,按照提示安装即可
1 | yum groupinstall "Development Tools" -y |
再次执行后…
提示缺少上面一堆依赖,按照提示安装即可
1 | yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel -y |
再次执行后…
提示缺少cups,按照提示安装即可
1 | yum install cups-devel -y |
再次执行后…
提示缺少fontconfig,按照提示安装即可
1 | yum install fontconfig-devel -y |
再次执行后…
提示缺少alsa,按照提示安装即可
1 | yum install alsa-lib-devel -y |
再次执行后,出现下图的信息就表示ok了,可以执行下一步了
整理了一下1
2yum 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:
1 | make images |
根据官方文档,make后面可以加上以下参数:1
2
3
4
5
6
7
8
9hotspot - 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命令,这样编译结束后还能看到编译的总共花了多长时间。1
time make images
我的笔记本的是I5-7300HQ的CPU,一共分配了4个核心,
在历时42分钟后终于编译完了。
5. 验证新构建的JDK:
1 | ./build/*/images/jdk/bin/java -version |
编译jdk13 的步骤和上面的类似
clone最新的openjdk源码
1 | # 最后的jdk-latest参数就是你想clone的目录,如果不存在的话会自动创建 |
由于编译的是openjdk13,那么引导jdk就得用到我们刚刚编译好的openjdk12
1 | bash configure --with-boot-jdk=/root/jdk12/build/linux-x86_64-server-release/images/jdk |
运行 make:
1 | make images |
这次找了台学校的服务器来编译…
配置:
E5-2670 v2 40个核心
128G内存
果然,核心多就是任性啊
然后试了下实验室的windows台式机里面的wsl…
wsl用的是ubuntu 18.04的系统
机器配置:
i7 8700 6核12线程
32G内存
同上,先安装必要的依赖
1 | 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
1 | sudo apt install -y openjdk-11-jdk |
或者用解压版的openjdk11,然后指定 –with-boot-jdk 参数
1 | bash configure --with-boot-jdk=/home/aaa/jdk-11.0.2 |
虽然这台台式机的cpu核心要比那台服务器cpu的要少很多,不过因为它睿频能达到4.0GHz
以上,所以编译所花的时间也只是多了5分钟左右,然而还是能完爆我的笔记本…