因为网上很多openjdk源码教程都是基于openjdk8,所以考虑搭建jdk8编译环境。本文记录一些安装过程以及遇到的问题和解决方法。

前置环境与安装包

系统版本:

image-20231026225554546

(1)openjdk-8下载链接:https://download.java.net/openjdk/jdk8/promoted/b132/openjdk-8-src-b132-03_mar_2014.zip

参考:https://www.cnblogs.com/flying607/p/9880053.html

(2)openjdk-7下载链接:https://download.java.net/openjdk/jdk7u75/ri/openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz

参考:https://jdk.java.net/java-se-ri/7

安装过程及问题记录

  1. 首先,把gcc和g++版本降下来
1
2
3
4
5
6
7
8
9
10
11
apt install gcc-4.8 g++-4.8
如果出现Package 'gcc-4.8' has no installation candidate
vim /etc/apt/sources.list
deb http://dk.archive.ubuntu.com/ubuntu xenial main
deb http://dk.archive.ubuntu.com/ubuntu xenial universe
apt update

配置新安装的gcc 4.8的启动优先级为100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
配置新安装的g++ 4.8的启动优先级为100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 100
  1. 配置configure
1
sh ./configure --with-target-bits=64 --with-jvm-variants=server --with-debug-level=slowdebug --disable-zip-debug-info --with-boot-jdk=/usr/lib/jvm/openjdk-7-7u75
  1. 安装bear
1
sudo apt-get install bear # 为什么使用bear,因为方便Clion调试不报错
  1. 使用bear make
1
bear make all
  1. 报错,操作系统OS不支持
1
2
3
4
5
vim hotspot/make/linux/Makefile

修改前:SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3%

修改后:SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4% 5%
  1. 继续make
1
bear make all
  1. 继续报错,修改
1
2
vim hotspot/make/linux/makefiles/adjust-mflags.sh
67行添加一个大写I

img

  1. 继续make
1
bear make all
  1. 继续报错,修改

注释该段或修改源代码,再编译就会忽略掉警告,直到编译完成。

1
2
3
4
5
6
vim ./hotspot/make/linux/makefiles/gcc.make

修改源代码如下:

208 # WARNINGS_ARE_ERRORS = -Werror
209 WARNINGS_ARE_ERRORS = -Wno-all
  1. 继续make
1
bear make all
  1. 成功。

导入Clion

打开CLion,操作路径: File > Open > 选择文件

openjdk8/compile_commands.json

image-20231026230538738

之后静静等待Clion导入项目,过程十分漫长。

接下来,就参考https://blog.csdn.net/Mr_rain/article/details/123887310操作就行了。

我的记录:

image-20231026230648462

image-20231026230707303

image-20231026230800424

成功!

image-20231026230929644

参考

https://blog.csdn.net/Mr_rain/article/details/123887310

https://blog.csdn.net/java_yanglikun/article/details/114460300

https://blog.csdn.net/BlueGrayWater/article/details/112917130

https://blog.csdn.net/xxzblog/article/details/120547032