1.下载oracle-jdk8

在编译 openjdk 时还需要一个 jdk 环境用以引导。

下载网站:

Java Downloads | Oracle

解压:

sudo tar -zxvf jdk-8u351-linux-x64.tar.gz -C /usr/local/jdk8/

环境变量:

vi /etc/profile

export JAVA_HOME=/usr/local/jdk8/jdk1.8.0_351

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin

验证:

source /etc/profile

java -version

2.下载openjdk8源码

下载链接:

https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-src-b04-14_jan_2020.zip

下载然后解压:

3.编译

安装gcc4.9 g++4.9:

ubuntu20比较新, 编译openjdk8需要安装老版本的编译工具

增加源

deb mirrors.dotsrc.org xenial main

deb mirrors.dotsrc.org xenial universe

sudo vim /etc/apt/sources.list

sudo apt update

安装

sudo apt-get install gcc-4.9

sudo apt-get install g++-4.9

配置多版本gcc控制

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 50

sudo update-alternatives --config gcc

下载依赖:

sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev ccache

sudo apt-get install build-essential gawk m4 libasound2-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif-common ant

修改部分配置:

* 修改hotspot/make/linux/Makefile文件的第232行代码:

SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4% 5%

* 修改hotspot/make/linux/makefiles/gcc.make文件的第208行代码:

WARNINGS_ARE_ERRORS = -Wno-all

* 注释掉随着 jdk/src/solaris/native/java/net下的 PlainDatagramSocketImpl.c 和 PlainSocketImpl.c中映入的头文件(glibc 2.32 的发布,Linux 系统删除了sys/sysctl.h):

// #include <sys/sysctl.h>

给源码目录权限:

sudo chmod 777 -R openjdk

生成编译配置:

cd openjdk

./configure --with-target-bits=64 --with-debug-level=slowdebug --with-boot-jdk=/usr/local/jdk8/jdk1.8.0_351 --with-jvm-variants=server --with-extra-cflags=-Wno-all --with-extra-cxxflags=-Wno-all

编译:

export DISABLE_HOTSPOT_OS_VERSION_CHECK=ok

make all

编译完成:

编译完成后源码目录下面会对出一个 buid/linux-x86_64-normal-server-slowdebug 目录,images里面就有 jre 和 jdk 的镜像制品:

验证:

使用编译得到的 images/j2sdk-image/bin/java 可执行文件执行版本查看:

./java -version

新建一个测试目录 debug,创建 Test.java 文件,然后使用编译得到的 javac、java 可执行文件分别就行吧编译和执行:

clion调试 openjdk相关推荐

  1. 通过CLion 调试JDK源码

    通过CLion 调试JDK源码 0. 简述 0.1 使用环境: 宿主机操作系统:Windows 10 专业版 虚拟机软件:VMware® Workstation 16 Pro 虚拟机操作系统:[ubu ...

  2. 编译jdk和使用clion调试jdk

    前言 我们都知道java程序是运行在jvm虚拟机上的,jdk里面很多native方法的实现都是在jvm源码里面的.那么jvm是如何加载类,如何创建对象,线程同步的本质是什么?那些看不见的native方 ...

  3. 007 - 配置 Clion 调试显示 Qt 变量

    配置 Clion 调试显示 Qt 变量 文章目录 配置 Clion 调试显示 Qt 变量 引言 尝试解决 配置 Lekensteyn's qt5printers KDevelop formatters ...

  4. CLion调试redis6源码

    背景 clion使用cmake来管理编译redis源码,而redis源码本身使用原生的make,因此直接将redis源码导入clion无法直接运行,需要配置cmake. 写c程序大体步骤为: 1).用 ...

  5. clion调试出现optimized out

    clion调试时候debug总是出现变量optimized out 解决方案: 修改CMakeLists: On high optimization levels, the compiler can ...

  6. clion开发php,如何在 Mac 上用 Clion 调试 php7 源码

    一.背景 据2019年7月份的编程排行榜,php 依然在前10,表明了 php 还是世界上最好的语言.php 的优势很多,只要场景合适,在工作中能用就用了.为了更好的理解这门语言,这几天学习下 php ...

  7. windows11+wsl+clion调试srs

    准备 srs git clone https://github.com/ossrs/srs.git 默认是SRS4.0Release的,这里我们也是使用此版本 wsl 个人感觉wsl在Windows1 ...

  8. 1009. clion调试段错误

    1   debug模式编译源代码 2 由于项源码从硬件读取数据,多线程并行执行,故未设置断点,由程序自由运行   3  修改源码改正段错误,搞定

  9. 工具 | 使用 CLion 编译调试 MySQL 8.0

    MySQL 源代码是基于关系模型理论的具体实现,是数据库理论与实践的结合. 阅读 MySQL 及相关工具的源代码,不仅是数据库研发人员的日常,也是 DBA 进阶的必经之路,全方位提高技术水平. 夯实原 ...

最新文章

  1. 剑指offer:二维数组中的查找python实现
  2. linux重装系统后 70-persistent-net.rules 不能删除解决
  3. JSTL 标签库详细介绍资料 .
  4. ajax后台重定向会返回什么_跳转,AJAX返回和重定向
  5. Sublime Text 3 快捷键总结(简洁版本)
  6. java 更改css_求助java正则表达式问题,我现在想用java程序操作我本地的a.css文件,并且对此文件里边的代码做更改。...
  7. 代码文件夹带有红色感叹号_接口测试平台代码实现7:菜单的开发
  8. Fiddler中常用的方法
  9. unity学习笔记-uniwebview3的使用以及一些补充(视频问题已解决)
  10. http动态代理转socks5怎么获取?
  11. 极客日报:库克对话何同学:苹果很多功能来自中国消费者反馈;高通、微软、谷歌联合施压监管方:反对NVIDIA收购ARM...
  12. 游戏类型常见英文缩写和释义
  13. 宁德时代与戴姆勒卡车股份公司扩大全球合作伙伴关系
  14. 复合材料力学_桥桂琼编_西工大版
  15. 207最新android书籍,《最强Android书 架构大剖析》PDF(高清版)
  16. 黑白棋出现pass 的条件 java_JAVA黑白棋之学习感悟
  17. [JVM]了断局: JDK8默认配置.
  18. 电动汽车的结构及优势
  19. 科学计算机弧度,在线计算器
  20. vue使用javascript动态创建script - 动态引入外部js文件

热门文章

  1. 《每天一点学习笔记》-初学python3~3
  2. WPF UIAutomation测试套件开发
  3. 人工神经网络 人工智能,人工智能神经网络论文
  4. 【设计】电压与电流基准
  5. ResultSetMetaData 、DatabaseMetaData中的方法介绍
  6. OpenCV 答题卡识别
  7. java实现第五届蓝桥杯斐波那契
  8. 骁龙8gen1和骁龙865性能差距 骁龙8gen1和骁龙865区别
  9. 你不理财,财不理你。 理财初探,基金攻略。钱少更需要理财。
  10. SecureCRT的常用命令: