最近在看《深入理解Java虚拟机》,本来想按照书上的内容在win7上编译一把openjdk,结果用了一天也没有make sanity成功,更别说make了。
涉及到编译的东西就没有简单,build文档一堆一堆的。
硬着头皮来吧,win7下没有成功,转向熟悉的fedora,不过fedora下编译也是一堆错误,不具体描述错误了,根据网上的总结,以下是编译流程:
一、
yum install git-core mercurial zip bzip2 unzip tar
yum install autoconf ccache make gcc gcc-c++ libstdc++-devel
yum install alsa-lib-devellibX11-devel libXext-devel libXt-devel libXrender-devel libXtst-devel libXi-devel libjpeg-devel giflib-devel freetype-devel
yum install curl rpm-build gpg
yum install java-1.6.0-openjdk-devel
yum install ant ant-*
yum install libstdc++-static
二、
下载cups-1.6.1-source.tar.bz2源码,把解压后的目录下的cups文件夹copy到/usr/include/下
三、
export LANG=C
export ALT_BOOTDIR=/usr/lib/jvm/java-openjdk
export ALLOW_DOWNLOADS=true
export USE_PRECOMPILED_HEADER=true
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
unset CLASSPATH
unset JAVA_HOME
四、
注释掉
check_os_version:
#ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
# $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
#endif
五、
进入你下载的openjdk7解压后的文件夹,运行java/make/jdk_generic_profile.sh这个脚本
六、
make sanity
看到sanity check pass
七、
make ALLOW_DOWNLOADS=true DISABLE_HOTSPOT_OS_VERSION_CHECK=ok (最好加上这两个参数)
成功编译
八、
进入build/linux-i586-devel/bin/
./java -version
终于可以看到openjdk7了
总之,各种问题出现时,看文档,搜google找到解决方式。
弄了一天半的时间终于弄好了,没有白费时间