目录
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代码了;