OpenJDK 编译防入坑指南

本文是OpenJDK编译的详细指南,包括下载源码、环境构建、编译步骤、问题解决及在NetBeans中的源码调试。在Ubuntu14.04上,作者遇到了OpenJDK与Oracle JDK的版本兼容性问题,通过调整Bootstrap JDK版本、修改Makefile和处理CurrencyData.properties文件等问题得以解决,并提供了NetBeans的调试配置方法。
摘要由CSDN通过智能技术生成

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


                
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值