Ubuntu12.10下编译openjdk 7

最近在读《深入理解Java虚拟机》这本书,于是谨遵书中教诲,尝试着自己动手编译一个jdk。这篇文章就把在Ubuntu12.10下编译openjdk 7的最简步骤记录下来,以备不时之需。

1. 下载build所需lib包

sudo aptitude build-dep openjdk-7

2. 下载openjdk7源码

我编译时用的是官方打包好的源码包,这里要注意的是:选择最新的源码包以避免不必要的麻烦(即主页上带7u的链接,而不是7)。

image

3. 设置当前shell的环境变量(optional)

export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-7-openjdk-amd64 

这两个参数在当前shell设置是为了之后编译出错时make clean能直接生效。

4. 检查编译环境的正确性

进入源码包的openjdk目录: make sanity > ~/sanity-test.txt

这份输出包含了很丰富的编译配置信息,其中也可以看出一些必须的参数并未设置(搜索NOT-SET),如在Build Tool Settings中:

ANT_VER = Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-7-openjdk-amd641.8.2 [requires at least 1.7.1] 

所以我们在执行build前需要把这些参数都设置好,下面是一份适用于Ubuntu12.10的编译脚本:

export LANG=C
export ANT_HOME=/usr/share/ant
export ALT_BOOTDIR=/usr/lib/jvm/java-7-openjdk-amd64
export DEBUG_NAME=debug

export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-7-openjdk-amd64

make ARCH_DATA_MODEL=64 BUILD_JAXWS=false BUILD_JAXP=false

注意:如果你的机器事先没有装JDK,那么需要装JDK(第一步的命令仅仅装了JRE)ANT才能起作用:

sudo aptitude install openjdk-7-jdk

5. 编译

执行第4步的编译脚本。如果编译失败用make clean来清除残留文件。

6. 编译成功

#-- Build times ----------        
Target debug_build         
Start 2013-01-03 19:32:25         
End 2013-01-03 19:45:04         
00:01:10 corba         
00:04:57 hotspot         
00:06:03 jdk         
00:00:29 langtools         
00:12:39 TOTAL         
-------------------------         
make[1]: Leaving directory '/home/hweicdl/dev/openjdk'

7. 检查结果

成功后在build目录下,有一个编译好的jdk出现。执行一下java –version看效果吧~!

image