在CentOS下编译OpenJDK一般需要以下几个步骤
1)获取OpenJDK源码,下载地址为openjdk1.7:http://download.java.net/openjdk/jdk7 ; openjdk1.6:http://download.java.net/openjdk/jdk6
2)下载完成后,解压openjdk,解压命令为:unzip file.zip
解压完成后的目录结构为:
hotspot:存放OpenJDK Hotspot Virtual Machine的源代码和make文件
corba:存放OpenJDK Cobra的源代码和make文件
jaxp:存放OpenJDK JAXP的相关信息和make文件,具体的源代码会再编译时会下载
jaxws:存放OpenJDK JAXWS的相关信息和make文件,具体的源代码会再编译时下载
jdk:存放OpenJDK runtime libraries的源代码和make文件
langtools:存放OpenJDK的javac等工具的源代码和make文件
3)安装JDK1.6,一些JAVA文件需要编译,无需指定JAVA_HOME、CLASSPATH
4)安装插件
a、alsa包(AdvancedLinux Sound Architecture)
检查是否已经安装alsa-lib和alsa-lib-devel rpm -qa|grep alsa
如果未安装执行安装命令 yum install alsa-lib-devel
b、cups-devel 命令 检查:rpm -qa|grep cups-devel 安装:yum install cups-devel
c、libXi-devel 命令 检查:rpm -qa|grep libXi-devel 安装:yum install libXi-devel
d、g++ 命令:yum install gcc gcc-c++
e、freetype2.3 下载压缩包(tar.gz格式)
解压:tar -xvf freetype-2.3.12.tar.gz
安装 cd freetype-2.3.12 ./configrue && make && make install
f、安装ant 下载压缩包(tar.gz格式)
解压:tar -xvf file.tar.gz
5)设置环境变量
执行 vi /etc/profile,在文件末尾添加
unset CLASSPATH //如果设置了CLASSPATH
unset JAVA_HOME // 如果设置了JAVA_HOME
export LANG=C
export ALT_BOOTDIR=/usr/opt/jdk1.6 // 第3步安装 的JDK目录
export ANT_HOME=ant安装目录
export ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype2
export ALT_FREETYPE_LIB_PATH=/usr/local/lib
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
保存后,记得要使修改生效,执行命令:. /etc/profile .与/之间有空格
6)、编译检查
进入openjdk目录 cd /openjdk
make sanity ARCH_DATA_MODEL=32
如果编译成功,则输出Sanity check passed.
如果出现错误,则根据错误信息进行排查。
如:
- ERROR: Your JAVA_HOME environment variable is set. This will
- most likely cause the build to fail. Please unset it
- and start your build again.
- Exiting because of the above error(s).
- make: *** [post-sanity] Error 1
原因为设置了JAVA_HOME,需要再配置文件中加上unset JAVA_HOME
7)开始编译
make ARCH_DATA_MODEL=32 debug_build ALLOW_DOWNLOADS=true
注:此过程非常漫长,需要1-2个小时的时间,需要耐心等待
ALLOW_DOWNLOADS=true目的是下载jaxp和jaxws的源码
如果出现如下代码,则表示成功:
#-- Build times ----------
Target debug_build
Start 2013-01-07 14:41:38
End 2013-01-07 15:09:46
00:01:23 corba
00:09:56 hotspot
00:00:18 jaxp
00:00:25 jaxws
00:15:33 jdk
00:00:33 langtools
00:28:08 TOTAL
-------------------------
make[1]: Leaving directory `/application/tools/openjdk'
8)编译过程中出现的问题
缺少X*库
编译过程中多次出现如下缺少X*, awt之类的错误,基本上都是因为缺乏图形相关的库
../../../src/solaris/native/sun/awt/img_util_md.h:32: ??:expected specifier-qualifier-list before 'XID'make[5]: *** [/home/jiangbo/Workspace/jdk/openjdk/build/linux-amd64/tmp/sun/sun.awt/awt/obj64/BufImgSurfaceData.o] Error 1make[5]: *** Waiting for unfinished jobs....make[5]: Leaving directory `/home/jiangbo/Workspace/jdk/openjdk/jdk/make/sun/awt'make[4]: *** [library_parallel_compile] Error 2make[4]: Leaving directory `/home/jiangbo/Workspace/jdk/openjdk/jdk/make/sun/awt'make[3]: *** [all] Error 1make[3]: Leaving directory `/home/jiangbo/Workspace/jdk/openjdk/jdk/make/sun'make[2]: *** [all] Error 1make[2]: Leaving directory `/home/jiangbo/Workspace/jdk/openjdk/jdk/make'make[1]: *** [jdk-build] Error 2make[1]: Leaving directory `/home/jiangbo/Workspace/jdk/openjdk'make: *** [build_product_image] Error 2
解决方法,安装X相关的库
yum install libX*