Ubuntu下编译openjdk11

前言

我的另一篇文章:Ubuntu下编译openjdk8 已经编译了openjdk8的版本,现在需要用到openjdk11的HotspotJVM,所以就编译一下openjdk11,把不同的部分记录下来,openjdk11的准备部分就不在赘述了,直接进入编译环节,需要准备环境的看我的编译openjdk8的文章,先把需要安装的工具安装了。

1.笔者环境

源码:openjdk11,大家可以官网下载,也可以到我的github下载,下载地址

系统:Ubuntu19.04

引导jdk:oraclejdk10,下载地址,下载后解压,然后配置环境变量,可以不配置,但有的环境会出问题。

2.编译过程

编译openjdk8的时候是在Ubuntu18.04,openjdk11开始也在Ubuntu18.04,但是出错半天没有解决了,所以又在Ubuntu19.04全新的环境中编译。

openjdk11,12的编译需要用到jre/lib,所以在引导jdk的目录下创建jre目录,然后把lib文件夹拷到jre目录。

2.1配置编译环境:

bash ./configure --with-target-bits=64 --with-boot-jdk=/opt/jdk/jdk-11.0.4/ --with-debug-level=slowdebug --with-native-debug-symbols=external --disable-warnings-as-errors

执行后出错:

Ubuntu下编译openjdk11_第1张图片
image.png

就是说我的系统环境没有安装autoconf,sudo apt-get install autoconf 安装后就可以继续了,不过又出了个错:

Ubuntu下编译openjdk11_第2张图片
image.png

error:Could not find fontconfig,就是说找不到fontconfig,安装就是了,按照打印的错误提示安装:sudo apt-get install libfontconfig1-dev,安装完再重新配置,就可以成功了。

Ubuntu下编译openjdk11_第3张图片
image.png

2.2开始编译:

make all

编译出错了:

Ubuntu下编译openjdk11_第4张图片
image.png

这个错是GCC版本过高导致的,应该是一个jdk的bug,感兴趣的可以看下openjdk的bug提交记录:https://bugs.openjdk.java.net/browse/JDK-8214444

gcc --version查看一下gcc的版本:

Ubuntu下编译openjdk11_第5张图片
image.png

确实有点高,官方写的要求GCC版本在4.x到7.x,所以8.3的GCC版本有点高,需要降低一下GCC的版本:

我是把gcc和g++降到gcc/g++6的版本,就可以编译通过了

  1. 下载gcc/g++ 6

sudo apt-get install -y gcc-6
sudo apt-get install -y g++-6

  1. 链接gcc/g++实现降级

cd /usr/bin
sudo rm gcc
sudo ln -s gcc-6 gcc
sudo rm g++
sudo ln -s g++-6 g++

再编译就OK了,可以通过,不过有几个警告,没有太大影响,我编译openjdk12没有任何警告,很流畅,11就是有编译的不太流畅。
每个人的环境不一样,出的问题可能也不一样,有问题也欢迎大家留言,如果自己Google找不到的话。

Ubuntu下编译openjdk11_第6张图片
image.png

你可能感兴趣的:(Ubuntu下编译openjdk11)