CentOS 7 下 编译 OpenJDK 并 调试

目录

Open JDK 编译:

前置说明: 

编译必须的依赖包:

配置编译选项:

安装调试软件clion  

参考文章:

操作前置说明:

导入项目: 

配置编译调试信息:

断点调试: 


Open JDK 编译:

前置说明: 

OpenJDK8 编译时, 提示不支持内核版本4.4 的.  于是本人切换回3.10 才可编译OK 

OpenJDK 8 的编译需要jdk7的bootsrap 引导, 所有需要下载jdk7 的 zip包,

详见; 编译配置.config中 需要配置作为引导编译器使用 

说明: 千万不要将jdk放在虚拟机共享路径中编译,不仅慢,还会报好多错误, 做事情要按照规范, 不要自己瞎试探, 不然都是坑
尤其是别人层层积累的东西, 要遵循经验,借鉴前人;

 

官方给出的方案不可用:

安装Mercurial

yum install -y mercurial

hg clone http://hg.openjdk.java.net/jdk9/dev 9dev  测试不可用

github 下载:

GitHub - openjdk/jdk: JDK main-line development  速度24k/s  

  

本人使用的是码云 仓库下载, 推荐使用, 速度很快: 

gitee 下载; //速度很快  分支页面: https://gitee.com/mirrors/openjdk/tags?page=22

git clone https://gitee.com/mirrors/openjdk.git  #默认是最新版master

git checkout  jdk8-b120  #检出jdk1.8版本编译;

编译必须的依赖包:

sudo yum  install -y freetype

sudo yum install freetype-devel

sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel

sudo yum install cups-devel

sudo yum install alsa-lib-devel

说明: 当前编译过程的java文件,需要前一个版本的支持,事先下载了linuxjdk1.7到本地/usr/local/myinstall/jdk1.7.0_80

配置编译选项:

运行中的日志会检测系统编译环境,并给出提示

进入下载的openjdk目录:运行命令

cd  openjdk

./configure --prefix=/usr/local/myinstall/jdk-src --with-jvm-variants=server --with-custom-make-dir=build/myopenjdk --with-jobs=8 --with-memory-size=4096 --with-num-cores=4  --with-boot-jdk=/usr/local/myinstall/jdk1.7.0_80  --with-debug-level=slowdebug  2>&1 | tee configure_mac_x64-1.log

报错问题: Impl$COFFHeaderImpl$OptionalHeaderStandardFieldsImpl.class (File name too long)

且调试也不支持, 总提示 dubug 关联失败, 就是这个共享路径的原因, 真是醉了, 本来想省事的,结果。。

这是由于我将jdk 放在了虚拟机共享路径的原因, 坑太多啦,哭

make clean 

一定要使用make clean 重新编译一次, 否则在clion 调试时, 会找不到运行文件和源文件的关联性,而无法断点执行;

make all CONF=linux-x86_64-normal-server-slowdebug ZIP_DEBUGINFO_FILES=0

该编译过程不支持cernol4.4 版本   本次开启了四个核心, 8G内存, 实际使用中内存占用4G足够

本人I5双核CPU 开启4线程 8g 内存 编译时间 大约 20分钟 , 

编译日志:

OpenJDK  官方冠关于JVM 运行的说明网址 :

http://openjdk.java.net/groups/hotspot/docs/RuntimeOverview.html

安装调试软件clion  

参考文章:

 JetBrains-CLion 永久激活教程 | Clay 的技术博客 (techgrow.cn)

小提示: 

本地虚拟机安装前务必保存一个镜像, 安装失败,直接恢复镜像, 免去许多不必要的配置删除问题;

操作前置说明:

1. 官网下载安装包: CLion-2019.3.3.tar.gz, 注意,一定下载和文中的版本一致的软件包

2. 论坛下载破解包:jetbrains-agent-20200227.zip  ,  参考文中的破解亲测可用

3. 解压安装包到linux系统clion-2019.3.3{一定不要使用共享目录,否则好大个坑}

将压缩包通过xshell 拷贝到 ~/work/

 4. 解压破解包放到到安装程序目录~/work/jetbrains-agent 防止以后破解目录被删除,造成clion无法运行的情况

本次安装的clion 路径为 虚拟机内部目录: /home/host/work/clion-2019.3.3

破解文件位置 /home/host/work/jetbrains-agent

        破解使用到的jar包: /home/host/work/jetbrains-agent/lib/jetbrains-key.jar

另外注意从官网下载clion 版本, 必须是2019.3.3 否则很肯能破解失败, 尽量和作者的版本一致 直接从官网下在即可

导入项目: 

clion 破解完成后, 打开我们刚刚编译好的openJDK项目

先打开clion  -- 关闭 刚刚创建的示例项目

点击导入项目:  选择openJdk 路径

然后clion 会导入项目 并自动生成依赖包路径, 这个比Kdevelop 好多了, 但是文件关联的检查时间相当的长,建议喝杯水休息一会, 大概十几分钟

clion会自动编译该项目, jdk的编译过程十分复杂, clion的默认功能一定是没办法帮忙完成的,但是他也会生成一个编译路径:

还会打印出编译错误信息, 主要是因为jdk的编译并不像常规程序,设计太多的文件依赖,和特定的路径,甚至还有使用特定jar包的,  所以 我们直接忽略掉clion的编译目录, 也不必删除, 不然又会报错找不到路径,很烦人

导入OK , 截图如下: 

配置编译调试信息:

注意:

点击下面Build ,使用箭头所指的 + 【添加】和 - 【删除】 按钮  删除编译时默认执行build构建 

选择调试的文件

openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java  对应的源文件路径

openjdk/jdk/src/share/bin/java.c  是其编译出的执行文件, 这里有种对应关系, 我们选择调试的文件打断点, 调用其中的方法, 即可进入相应.c文件的断点, 就是这种思路

openjdk/jdk/src/share/bin/main.c  中的main 函数打一个断点 , 然后点击debug 调试

即可进入断点: 

断点调试: 

示例如下图:  

恭喜下载可以随便调试属于自己的jdk代码了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值