自己的本本买来很长时间了 最近装了给国产山寨的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支持的版本里面。 下面这个错误其实也是在编译的时候碰到,然后试着注释掉
- 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
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; \