Linux(Ubuntu)环境下构建JDK12编译环境(超详细!)

文章目录

  • 一、前期准备
    • 1.安装OpenJDK12
    • 2.下载前置工具
    • 3.下载编译jdk12的jdk11
  • 二、进行编译
    • 1.编译前配置
    • 2.开始编译
  • 三、使用自己编译的JDK
    • 1.进行全局配置
    • 2.验证是否生效

注意:编译jdk很吃配置!!!所以一定要把虚拟机配置调高进行,我的虚拟机运行内存是8G,分配空间50G(后序编译文件占20G左右)

一、前期准备

1.安装OpenJDK12

官网地址:https://hg.openjdk.java.net/jdk/jdk12/
点击左侧栏browse,下载zip文件
Linux(Ubuntu)环境下构建JDK12编译环境(超详细!)_第1张图片
Linux(Ubuntu)环境下构建JDK12编译环境(超详细!)_第2张图片
解压到文件夹准备使用。

2.下载前置工具

sudo apt-get install build-essential
sudo apt-get install libfreetype6-dev
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
sudo apt-get install libasound2-dev
sudo apt-get install libffi-dev
sudo apt-get install autoconf

这一步一般不会出问题

3.下载编译jdk12的jdk11

编译jdk代码需要用到另一个编译期可用的JDK,根据n-1原则,编译JDK12时,必须使用JDK11及以后的版本

sudo apt-get install openjdk-11-jdk

下载完还是用java -version检测一下吧
在这里插入图片描述

二、进行编译

1.编译前配置

进入我们解压好的jdk12主目录
在这里插入图片描述
如果是多次编译,或者目录结构成功产生后又再次修改了配置,必须先使用“make clean”和“make dist-clean”命令清理目录(在jdk12的主目录执行就可以),后面的配置会在“bin/配置名称”下产生文件。

开始配置,在jdk12主目录进行以下指令

bash configure --disable-warning-as-errors --enable-debug --with-jvm-variants=server

注意,很多博客(包括周大神的《深入理解java虚拟机》)这里写的是“bash configure --enable-debug --with-jvm-variants=server”,但是在编译过程中会报char* _builtin_strncpy的错,原因是新版本gcc加入了stringup truncation的验证警告,需要禁止这个警告,而–disable-warning-as-errors的作用是“不要将本机警告视为错误”,加入此行设置后序即可正常编译。

此外,这里也许会报一些简单的配置错误,但提示会给出解决办法,这类问题跟着提示敲就行。
编译成功出现如下提示:

Tools summary:
* Boot JDK:       java version "12.0.2" 2019-07-16 Java(TM) SE Runtime Environment (build 12.0.2+10) Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)  (at /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home)
* Toolchain:      clang (clang/LLVM from Xcode 11.4)
* C Compiler:     Version 11.0.3 (at /usr/bin/clang)
* C++ Compiler:   Version 11.0.3 (at /usr/bin/clang++)

Build performance summary:
* Cores to use:   8
* Memory limit:   16384 MB

2.开始编译

在jdk主目录进行以下指令

make images

"images"是"product-images"编译目标的简写别名,作用是编译出整个jdk镜像。
这一步是整个编译过程中最花时间的地方,我的虚拟机分配内存是8G,花了大概20多分钟编译完毕,弹出如下提示:

Creating jdk image
Creating CDS archive for jdk image
Stopping sjavac server
Finished building target 'images' in configuration 'macosx-x86_64-server-fastdebug'

编译到此就结束了,我们可以把自己编译的jdk路径复制到JAVA_HOME中,就可以作为一个完整的jdk使用。
Linux(Ubuntu)环境下构建JDK12编译环境(超详细!)_第3张图片

三、使用自己编译的JDK

1.进行全局配置

sudo gedit ~/.bashrc

把以下命令复制到文档最底部

export JAVA_HOME=/home/yangyungang/Documents/jdk12/jdk12-06222165c35f/build/linux-x86_64-server-fastdebug/jdk
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export JRE_HOME=${JAVA_HOME}/jre
export PATH=${JAVA_HOME}/bin:$PATH

保存退出

2.验证是否生效

java -version

可以看到,我们的jdk版本变成了12了
在这里插入图片描述

你可能感兴趣的:(Java,jdk,linux,java,jvm)