linux编译openjdk8
最近在看《深入理解java虚拟机》,第一章主要讲java历史,有点意思的是编译openjdk,想自己试着搞搞,但是书上编译的是7,而且要配置一堆的配置文件,就上网查查,openjdk8貌似不用配置这么多,就试着编译8。纪录一下操作过程。
**
编译
**
系统:centOs 7.5 64位(刚开始用的腾讯云1核1g,编译的时候说内存不够,好在腾讯云5天免费退,改成1核2g)
1、下载openjdk8:https://pan.baidu.com/s/1pLSMpAj
2、上传到服务器/usr/openjdk
3、下载的压缩包是7z的,所以要先安装7z工具
然后网上一些7z解压命令 7z x filename会出现7z: command not found错误。
可以参考链接:https://blog.csdn.net/yu_yuan_1314/article/details/11999995
4、安装jdk,编译需要一个引导jdk,网上都说要比openjdk的版本低一个,我也不知道为什么,就依葫芦画瓢,下了1.7u80.
5、安装编译用的工具,我安装如下工具之后就可以正常编译了,没有网上说的configure出现未安装的依赖。大家有的话可以再安装缺少的。
6、开始编译
此处说明下上面configure用到的参数作用:
–with-target-bits=64 :指定生成64位jdk;
–with-boot-jdk=/usr/java/jdk1.7.0_80/:启动jdk的路径;
–with-debug-level=slowdebug:编译时debug的级别,有release, fastdebug, slowdebug 三种级别;
–enable-debug-symbols ZIP_DEBUGINFO_FILES=0:生成调试的符号信息,并且不压缩;
make成功之后会出现如下截图:但是我没有出现网上说的编译1个多小时的情况
至此,编译工作完成,但是还没有做运行,调试工作。
参考链接:
https://www.linuxidc.com/Linux/2017-06/144713.htm
http://www.voidcn.com/article/p-zkxeqkor-bkg.html
https://blog.csdn.net/hxm_Code/article/details/77417709
运行调试
因为我的linux是云服务器,不太方便调试,想着能不能把编译好的代码放到我的本地windows下运行调试,但是我估计是不行的。猜测理由:1、jdk包含jre,都要分成不同系统下载。2、/usr/openjdk/openjdk-8u40-src-b25-10_feb_2015/openjdk/hotspot/make 这个路径下有不同的操作系统的makefile,以及特定的脚本,应该是按照操作系统来采用不同的配置来生成虚拟机。3、虚拟机是为了屏蔽操作系统的带来的环境不一致,但是在调用native方法的时候还是要适应系统的吧。
20180920更新
可能是我执行的方法不对或者怎么样,总之在windows下执行不起来,其次网上运行调试的文章有些语焉不详,netbeans失败了,还是学着使用gdb吧。
抽时间粗略的学习了一下怎么用gdb。
命令参考链接:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html#cgdb
http://man.linuxde.net/gdb
首先在/usr/openjdk/openjdk-8u40-src-b25-10_feb_2015/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin 路径下写一个简单java文件
在当前路径下 ./javac Test.java,编译一下文件,这是用openjdk编译出来的jdk来编译java文件
然后执行以下命令
这样子是不是和平时在ide上debug感觉不一样,可以打命令 layout。下图是不是就感觉好多了。
然后为什么在main.c上打断点,我看过一些文章是在openjdk/hotspot/src/share/tools/launcher/java.c上打断点,但是openjdk8之后虚拟机入口改变了。
__EOF__

本文链接:https://www.cnblogs.com/yaphetsfang/articles/13426740.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下