centos 7 环境编译 openJDK 8 JVM 源码
centos 7 系统
官方镜像下载列表:https://www.centos.org/download/mirrors/
笔者下载的是 CentOS-7-x86_64-DVD-2009.iso,下载地址:http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso
centos 7 安装至 VMware 教程可参见笔者的博文:虚拟机安装 centos 7 系统
openJDK 8 源码包
openJDK 源码全部使用 Mercurial 管理,网址为:https://hg.openjdk.java.net/
选择 jdk8u
部署文档:
从上述图片中可以看到并没有源码,需要讲该项目下载下来,并执行 get_source.sh 文件。笔者尝试了多次,均不能成功下载源码。建议使用如下方式下载,访问:https://jdk.java.net/
笔者下载地址:https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-src-b04-14_jan_2020.zip
JDK 1.7 安装包
官方要求编译 jdk8 源码需要使用到 jdk7,因此需要下载 jdk7:
官方地址:https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html
镜像地址:https://mirrors.huaweicloud.com/java/jdk/
笔者下载的版本为:https://mirrors.huaweicloud.com/java/jdk/7u80-b15/
编译环境
将上述下载好的:openJDK 8 源码包(openjdk-8u41-src-b04-14_jan_2020.zip)和 JDK 1.7 安装包(jdk-7u80-linux-x64.tar.gz)上传至 centos 系统。
笔者在系统根目录下创建了
/data
文件目录,上述俩个文件均上传至此目录,后续操作均在此目录下完成。由于 centos 是最小安装,没有相关 unzip 解压工具,执行如下命令安装 unzip 工具:
1 yum install -y unzip
执行如下命令,将上述俩个压缩包进行解压:
1 | tar -zxvf /data/jdk-7u80-linux-x64.tar.gz |
得到/data/jdk1.7.0_80
文件目录和/data/openjdk
文件目录:
安装依赖工具
使用 yum 包管理器安装下述相关工具:
1 | 安装 c 语言开发相关编译器及调试器 |
进入/data/openjdk
文件目录、设置 configure 为可执行文件,再执行预编译:
1 | cd /data/openjdk |
参数含义:
–with-boot-jdk-jvmargs:指定 boot-jdk 目录
–with-target-bits:系统的位数:32 或者 64
–with-debug-level:可选择:release, fastdebug, or slowdebug
上述命令执行成功,会提示如下信息:
上述步骤完成之后,使用 make 工具编译 JVM:
1 | make all |
编译预计半小时,其中出现警告不需要处理,直到出现如下信息表示编译成功:
自己编译好的 JDK 就在/data/openjdk/build/linux-x86_64-normal-server-release/jdk
目录下:
查看 jdk 版本:
1 | /data/openjdk/build/linux-x86_64-normal-server-release/jdk/bin/java -version |
从版本信息中可以看到自已编译的版本信息: