OpenJDK 编译防入坑指南

OpenJDK 编译防入坑指南

深入理解 JVM,应自己跟踪调试 JDK 到 JVM 源码开始,能更加容易上手 JVM,而学习的入门之路应从亲手实战编译一套 JDK。不论 JVM 底层还是 Java 高级开发都随时会跟 Linux 打交道,整个 JVM 学习应在 Linux 环境下展开,本人选择的编译环境是 Ubuntu14.04LTS(吐槽一下 Ubuntu16.04 更新推送,提示了几天还没更新上)。JDK 编译过程比较复杂繁琐,中间出现了各种莫名奇妙的编译 BUG 和依赖冲突等问题,在周志明《深入理解Java虚拟机》一书中描述得还不够详细,特写此指南供日后参考。

一、下载 JDK 源码

首先应明确 OpenJDK与其他JDK版本的关系。最广泛的 JDK 即 Oracle JDK,OpenJDK 在代码、性能等方面与 Oracle JDK 等非常接近。OpenJDK 一开始基于 JDK7 开发,即为 OpenJDK7,后来又衍生出 OpenJDK6 和 OpenJDK8等。我采用的是与书中一样的 OpenJDK7u。
从官网 Source Bundle Release 下载 OpenJDK 源码包并解压,注意,不应到root目录下,否则有时候会出现一些繁琐的权限问题。

二、编译环境构建

由于 OpenJDK各个组成部分除了 C++ 实现外,还有很多代码需要由 Java 实现,故应该为编译构建 OpenJDK 代码提供一个 JDK,称之为 Bootstrap JDK。对应于 OpenJDK7,应使用 JDK6 Update 14 之后的版本,本人选择的是 jdk1.7.0_79,下载源码并解压。Ubuntu14.04的其他依赖可用以下命令完成

sudo apt-get install build essential gawk m4 openjdk-6-jdk libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant

OpenJDK 和 Oracle JDK 之间存在版本兼容性问题,例如本人在编译时,会出现无法找到 libjvm.so 等问题,而把 Bootstrap JDK 改为 JDK6 时又好了。遇到的部分问题将在文后提出一些可能的解决方案。

三、编译脚本

进入到解压好的 OpenJDK 源码文件夹下创建一个编译 shell script,例如 build.sh


                
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值