为了账号安全,请及时绑定邮箱和手机立即绑定

OpenJDK系列(一):编译/调试与项目结构

标签:
Maya

OpenJDK编译

之前的基于OpenJDK8的资料由于人为因素丢失了,索性就重新来过:以OpenJDK10为例.此外,如无特殊说明,开发平台皆为MacOS.最新文章见浮游.

源码下载

在mac平台上,可以通过HomeBrew进行OpenJDK源码的下载,以OpenJDK10为例.由于OpenJDK的源码采用mercurial进行管理,因此需要安装mercurial,另外由于编译需要,我们同时安装ccache和freetype工具:

 brew install mercurial  brew install install ccache  brew install freetype

接下来通过以下命令正式进行下载:

 hg clone http://hg.openjdk.java.net/jdk10/jdk10 OpenJDK10  # 进入OpenJDK10目录下执行命令  bash ./get_source.sh

   webp  image-20180903153521528

现在我们已经将所有的源码下载到本地了,接下来我们可以进行编译来满足下好奇心,

编译

在正式编译之前需要我们先配置编译信息,该过程通过configure.sh脚本实现,其存放在OpenJDK源码的根目录.使用该脚本需要制定一些参数参数,在mac平台下,配置如下:

./configure --with-target-bits=64 --with-freetype=/usr/local/Cellar/freetype/2.9.1 --enable-ccache --with-jvm-variants=server,client --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --disable-zip-debug-info --disable-warnings-as-errors --with-debug-level=slowdebug 2>&1 | tee configure_mac_x64.log

注意不要写错freetype的路径,可以通过 brew list freetype命令来查看当前freetype的安装路径.

configure中提供了大量的参数,通过命令bash ./configure --help=short,当然你也可以直接查看OpenJDK的官方说明,这里我们只是简单介绍几个:

参数含义
--with-target-bits设置32为/64编译
--with-freetype指定freetype目录
--with-jvm-variants=server,client设置要构建的JVM的变体,目前可以选择server,client,minimal,core,zero,zeroshark,custom
--with-boot-jdk-jvmargs设置运行boot JDK所需要的JVM参数,例如--with-boot-jdk-jvmargs="-Xmx8G"
--with-debug-level调试等级,目前可以指定为release,fastdebug,是slowdebug,optimized

编译信息配置后之后,通过以下命令进行编译即可:

 export  make all LOG=debug 2>&1 | tee make_mac_x64.log

期间可能会遇到一些编译问题,大多可以官网找到方法,编译的产物会被存放在build目录下:

webp  image-20180903161446477

执行以下命令,验证下编译结果

cd OpenJDK10/build/macosx-x86_64-normal-serverANDclient-slowdebug/jdk/bin ./java -version

   webp  image-20180903161734147

OpenJDK调试

对于OpenJDK调试而言,常用的工具有gdb和lldb,在MacOS使用更多的是lldb.直接使用lldb进行调试,相对比较原始,对于比较复杂的项目还可以借助Xcode或者CLion.

Xcode调试OpenJDK

以Xcode 9为例.

工程创建

首先使用Xcode创建一个新的项目OpenSDK10,为Command Line Tool类型.

webp

作者:涅槃1992
链接:https://www.jianshu.com/p/3206c00e7ff6


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
205
获赞与收藏
1008

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消