编译JDK1.7

1. 背景

想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译一套JDK。

2. 获取JDK源码

从http://openjdk.java.net/下载源码,如 openjdk-6-src-b27-26_oct_2012.tar.gz

解压之后的目录结构:

3. 编译环境

3.1 系统环境

Ubuntu 12.04,64位

3.2 准备编译脚本

在openjdk根目录下面创建build.sh文件,内容为编译的设置和编译命令

build.sh

设置语言
export LANG=C

设置Bootstrap JDK
export ALT_BOOTDIR=/sdf/jvm/openjdk/jdk1.7.0_72

允许自动下载依赖
export ALLOW_DOWNLOADS=true

并行编译的线程数,设置为何CPU内核数量一致即可
export HOTSPOT_BUILD_JOBS=12
export ALT_PARALLEL_COMPILE_JOBS=12

export SKIP_COMPARE_IMAGES=true

使用预编译头文件,不加这个编译会更慢一些
export USER_PRECOMPILED_HEADER=true

设置要编译的内容
export BUILD_LANGTOOLS=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true


BUILD_DEPLOY=false

BUILD_INSTALL=false

编译结果所存放的路径
export ALT_OUTPUTDIR=/sdf/jvm/openjdk/build

unset JAVA_HOME
unset CLASSPATH
unset LD_LIBRARY_PATH

开始编译
make 2>&1 | tee $ALT_OUTPUTDIR/build.log

3.3 执行sh build.sh编译

在编译过程中有很多错误,只能说一步步解决。

下面列举我在编译过程中遇到的问题:

1. You Seem to not have installed ALSA 0.9.1 or higher

(1)清除系统原有的alsa模块

sudo apt-get remove linux-sound-base alsa-base alsa-utils

(2)重新安装alsa模块

sudo apt-get install xmlto libasound2-dev

sudo apt-get install linux-sound-base alsa-base alsa-utils

这是一类问题,基本就是缺少依赖,只要成功安装就可以了

具体参考:

https://blog.csdn.net/qq_29729577/article/details/53706551 

http://cduym.iteye.com/blog/1892416

http://caoxudong818.iteye.com/blog/1748869

2. 

解决方案:使用jdk1.7.0_72作为ALT_BOOTDIR

3. 

https://blog.csdn.net/abountwinter/article/details/52369507

4. 编译成功

编译成功的结果:

编译的输出:

验证:

x.参考资料

深入理解Java虚拟机:JVM高级特性与最佳实践

https://blog.csdn.net/qq_29729577/article/details/53706551

http://cduym.iteye.com/blog/1892416

https://blog.csdn.net/abountwinter/article/details/52369507

http://caoxudong818.iteye.com/blog/1748869

猜你喜欢

转载自www.cnblogs.com/lujiango/p/8917307.html