JVM系列(一):自己编译jdk遇到的一些坑

8 篇文章 0 订阅
8 篇文章 0 订阅

两个月前开始学习jvm,买了本书《深入理解Java虚拟机-JVM高级特性与最佳实践——周志明著》,卡在第一章自己编译JDK,一直报错,然后便停顿了两个月,前几天再一次拾起,终于搞定。过程中惊险刺激先不说,弄完就想着把经历的坑都写出来,避免下次遇见。
这里写图片描述
这里写图片描述
再然后,便遇着了卡了我两个月的问题,看下图:
libjvm.so:too many levels of symblic links
这里写图片描述
后来这个问题其实很简单就解决了,在两个月后我重新编译的时候,熟悉的问题再次暴露出来,这次我仔细去找了这个文件,发现出现了两个文件(看下图),只有第二个文件是新生成的,而且命名后面加了个”.1”,众所周知,windows系统在文件名重复的情况下回自动加一个“(1)”在文件名后面,以区分前一个文件,所以我怀疑是每次编译这个文件都会新生成,而且中途我因为尝试编译过很多次,所以我决定把编译目标目录(outputdir)删除(当然是重命名备份一下),然后重新编译,谢天谢地,终于不再报这个错,所以我猜对了。
这里写图片描述
虽然猜对了,但后面的过程也并没有顺风顺水,看下图,查出问题应该是版本release时太早了,超过了10年,改一下时间就好了,参照这个链接:http://blog.csdn.net/abountwinter/article/details/52369507
这里写图片描述
接着便完全成功了,成功截图如下:
这里写图片描述
接下来,跟这书的目录走,在netbean中调试jdk源码,具体内容参考本书和下面链接:http://blog.csdn.net/pange1991/article/details/51580969,需要注意的是,需要在创建项目之前单独编译hotspot的源码,否则在配置运行命令时无法找到/jvmg目录及目录下文件。因为我没有先编译,所以我在配置的时候就没有找到这个目录下的gamma文件,这步我配了/product目录,配置完成后我对整个项目进行了编译,生成了/jvmg的目录下文件。两者我没有进行过对比,按官方解释,这几个目录对应了不同的优化级别,优化级别越高,性能自然越好,但是输出代码与源代码的差距就越大,难于调试。具体我以后弄明白了会再补进来。

附上一些配置内容:

#set java environment by liunian
#rootpath=/java/liunianBuildOpenJdk-7u40
rootpath=/java/jdk1.7.0_80
JAVA_HOME=$rootpath/bin
JRE_HOME=$rootpath/jre
CLASSPATH=./:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASSPATH PATH
#export JAVA_HOME=/java/jdk1.6.0_45
#export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#export PATH=$PATH:$JAVA_HOME/bin

ALT_BOOTDIR=/java/jvm/jdk/Contents/Home ARCH_DATA_MODEL=64 LANG=C

/java/openjdk/hotspot/build/linux/linux_amd64_compiler2/jvmg/gamma -XX:+TraceBytecodes -XX:StopInterpreterAt=1 Queens
#/java/jvm/jdkBuild/openjdk_7u40/hotspot/outputdir/linux_amd64_compiler2/product/gamma -XX:+TraceBytecodes -XX:StopInterpreterAt=1 Queens

JAVA_HOME=/java/jdk1.7.0_80
CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/jre/lib/i18n.jar
LD_LIBRARY_PATH=.:${JAVA_HOME}/jre/lib/amd64/native_threads:${JAVA_HOME}/jre/lib/amd64:
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值