基于Ubuntu 20.04.3平台编译OpenJDK12

本文参考周志明的《深入理解Java虚拟机》做探讨。

一、 构建编译环境

1. 安装OpenJDK编译依赖库

在Ubuntu系统上构造编译环境需要安装OpenJDK编译依赖库,下面的表格来源于《深入理解Java虚拟机》

OpenJDK编译依赖库
工具库名称安装命令
FreeTypeThe FreeType Projectsudo apt-get install libfreetype6-dev
CUPSCommon UNIX Printing Systemsudo apt-get install libcups-dev
X11X Window Systemsudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
ALSAAdvanced Linux Sound Architecturesudo apt-get install libasound2-dev
libffiPortable Foreign Function Interface Librarysudo apt-get install libffi-dev
AutoconfExtensible Package of M4 Macrossudo apt-get install autoconf

 2. 安装Bootstrap JDK

编译OpenJDK12时,Bootstrap JDK必须使用JDK11及之后的版本。

sudo apt-get install openjdk-11-jdk

二、下载需要编译的源码OpenJDK12

本文所用的OpenJDK12源码来源github

https://github.com/jiankunking/openjdk12/archive/refs/heads/master.zip

三、编译OpenJDK12

在Ubuntu系统中进入上述OpenJDK12文件夹内,执行bash configure来检查依赖项、参数配置和构建输出目录结构等。如果编译过程中需要的工具链或者依赖项有缺失,命令执行后将会得到明确的提示。笔者在编译过程中就报错缺失fontconfig文件,于是重新安装此库

sudo apt-get install libfontconfig1-dev

执行成功后,会出现如下所示的结果(此结果基于bash configure --enable-debug --with-jvm-variants=server)

 最后执行make命令,成功后即可在“build/配置名称”目录下看到如下目录结构

笔者整个过程中所遇问题汇总:

1. 无法建立软链接

failed to create symbolic link '/mnt/hgfs/Ubuntu/openjdk12-master/build/linux-x86_64-server-release/jdk/lib/tzdb.dat': Operation not supported

 分析:由于笔者是通过在Windows系统中将OpenJDK12源码下载过来然后再用vmware的共享文件夹来传递到Ubuntu系统中的,而由于在共享文件夹中的磁盘格式的是windows 的磁盘格式,ln命令并不适用,此时是由于在编译动态库的时候会在库的结尾加入版本信息,然后再通过ln建立链接,此时只需要在pro文件中加入 CONFIG+=plugin之后编译的库名称中是不包含版本信息的,此时不会使用ln去建立链接,就可以在当前共享文件夹中进行编译。或者通过mv命令将文件夹移至虚拟机中的文件夹中也可。

2. gcc、g++版本问题

修改版本:

(1)首先安装gcc7(默认安装gcc9)

sudo apt-get install gcc-7 g++-7

(2)对gcc更换软链接

cd /usr/bin
sudo rm -r gcc          #移除之前的软链接
sudo ln -sf gcc-7 gcc   #建立gcc-7的软链接
sudo rm -r g++
sudo ln -sf g++-7 g++

(3)通过gcc -v命令查看gcc版本是否生效

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HardyZhan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值