文章目录
- 一、源码下载
- 二、环境依赖配置[^1]
- 三、依赖检查及构建编译配置
- 四、编译jdk
- 五、编译完成
- 完
一、源码下载
以OpenJDK为例:
jdk<10访问OpenJDK Mercurial Repositories
jdk≥10访问子目录jdk/jdk12: log (openjdk.org)
二、环境依赖配置1
i7-12700H+32G 4800MHz
虚拟机Ubuntu 20.04 64位+12核16G
- 编译器,选用GCC,版本最优至少7.4,此处采用9.4.02
sudo apt-get install build-essential
- Boot jdk,安装jdk N-1,此处为jdk-11
sudo apt-get install openjdk-11-jdk
- 安装Linux编译需要的扩展依赖:
# FreeType
sudo apt-get install libfreetype6-dev
# CUPS(Common UNIX Printing System)
sudo apt-get install libcups2-dev
# X11
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(Protable Foreign Function Interface Lib)
sudo apt-get install libffi-dev
# Autoconf(Extensible Package of M4 Macros)
sudo apt-get install autoconf
- 纯净Ubuntu可能还需要以下依赖:
sudo apt-get install libfontconfig1-dev
三、依赖检查及构建编译配置
根据个人需要进行编译配置,最简单的需求就是编译一个debug版的jdk
- –enable-debug:开启debug
- –with-target-bits:jdk位数
- –with-jvm-variants:设置hotspot虚拟机为server,标准配置
- –with-version-string:可选,自定义版本号字符串3
- –disable-warnings-as-errors:高版本GCC编译必须开启2
cd jdk12-06222165c35f
# 开启debug、编译64位、设置hotSpot虚拟机为server模式以便VM获取更多资源、自定义显示的版本号
# *高版本GCC必须使用此参数,因为-Werror参数会强制结束编译
bash ./configure \
--enable-debug \
--with-target-bits=64 \
--with-jvm-variants=server \
--with-version-string='12-ea+0-server.64.Ho1aAs.240116' \
--disable-warnings-as-errors
依赖检查及构建编译配置后4,显示编译信息即可开始编译
四、编译jdk
运行make images
编译jdk
编译时间45min,虚拟机内存建议8G+
五、编译完成
在build目录找到配置目录下的jdk文件夹就是编译好的jdk
三个jdk对比
完
欢迎关注我的CSDN博客 :@Ho1aAs
版权属于:Ho1aAs
本文链接:https://ho1aas.blog.csdn.net/article/details/136318150
版权声明:本文为原创,转载时须注明出处及本声明
英文原版编译手册请查阅源码包.doc/building.html文件 ↩︎
采用高版本GCC需要在后续编译配置添加参数
--disable-warnings-as-errors
↩︎ ↩︎版本号格式参考https://docs.oracle.com/javase%2F9%2Fdocs%2Fapi%2F%2F/java/lang/Runtime.Version.html ↩︎
如果依赖有缺失报错,按照提示配好,再重新运行./configure ↩︎