Fedora 16 下编译 OpenJDK 7
自己的本本买来很长时间了 最近装了给国产山寨的micro Sata, 因此W520自己带的500G硬盘压力轻了不少。 i7的4核8线程跑跑win7 太对不起它了, ?赶紧的虚拟机装个自己用的最多的Fedora( 现在的最新版本16)。
?
最近在看深入理解Java虚拟机,作者推荐下载OpenJdK来自己编译玩玩。主意不错,有了Linux 操作系统就不用在windows 下面还需要悲催的又要cgwin 又要visual studio 了。下面就是安装编译Openjdk的过程了:
?
1, ? 下载 打包好的 OpenJdk 源代码包:openjdk-7-fcs-src-b147-27_jun_2011.zip
?
2, ? unzip ?这个包。 ?我将它解压到 ?/root/openjdk ?目录
?
3, ???yum-builddep java-1.6.0-openjdk
? ? ?这是安装一个 jdk 6 在 /usr/lib/jvm/java-openjdk 这个位置。这个JDK 就是所谓的bootstrap jdk了. 因为在编译openjdk7 的时候java 部分的代码就是这个来编译的了。 ?当然c,c++部分是gcc 的干活。?
4, 根据zip包里面的 Readme-builds.html 提示设置 环境变量如下:
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 ? ??? ? ?
?
5, 修改 ?/root/openjdk/hotspot/make/linux下的Makefile文件,注释掉以下内容,若不注释,会报错,然后exit 1退出编译. 这个原因是因为OpenJDK 在2011 大概6月份的时候就出来了, 而那个时候Fedora 16 还没有出来, 应该还没有在OpenJDK支持的版本里面。 下面这个错误其实也是在编译的时候碰到,然后试着注释掉
6, make?sanity ?
? ? 如果出现 check sanity passed !
?
7, ?make
?
需要说明的是 ?在gcc link hotspot 的时候 出现了一个错误
? ld can not find ?libstdc++
?
大概是执行这个命令的时候 ?
?
? ?gcc -v -m64 -Xlinker -O1 -Wl,--hash-style=both ?-Xlinker -z -Xlinker noexecstack -shared ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \
? ? ? ? ? ? ? ?-Xlinker --version-script=mapfile_reorder -Xlinker -soname=libjvm.so ?-static-libgcc -o libjvm.so ...\
? -Wl,-Bstatic \
? -lstdc++ -Wl,-Bdynamic -lm -ldl -lpthread; ? ? ? \