ubuntu20编译openjdk8

516 阅读1分钟

获取源码

git clone https://github.com/openjdk/jdk.git
git checkout jdk8-b120 # jdk8分支tag,可自行选择,本次选择的是最后一个版本

配置检查

先给configure文件赋予读写执行权限

sudo chmod 777 configure

执行配置检查,根据提示缺少什么安装什么 sudo apt install xxx

./configure --with-target-bits=64 --with-debug-level=slowdebug

编译

make

遇到的问题处理

  • This os not support

解决方法 首先,查看系统版本

uname -r

然后修改文件hotspot/make/linux/Makefile,添加你的版本支持,如下截图

image.png

  • 编译语法错误 解决方法:修改hotspot/make/linux/makefiles/adjust-mflags.sh第67行增加一个I.(注意是大写的i, 而不是竖线)

image.png

  • gcc,g++版本太高导致编译错误

解决方案:降低gcc,g++版本到4.9,如何降低呢,同学可自行百度或者google

本人参考如下方案解决 第一,给apt添加低版本的gcc源,修改/etc/apt/sources.list,添加如下的源

# for gcc 4.* g++ 4.*
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe

第二,安装低版本的g++,会依赖gcc 第三,切换gcc,g++ 版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 # 40 是指优先级,数字越大优先级越高
  • glibc版本大于等于2.24时,编译warn as error错误修复 先查看系统glibc版本确认下
getconf GNU_LIBC_VERSION

解决方案:修改hotspot/make/linux/makefiles/gcc.make文件中如下配置

# WARNINGS_ARE_ERRORS = -Werror 
WARNINGS_ARE_ERRORS = -Wno-all

最终编译成功

参考文档

blog.csdn.net/yanyuan904/…
blog.csdn.net/BlueGrayWat…
www.cxybb.com/article/200…