编绎OpenJDK

简介: 因为对于Java里的vtable,itable,有个地方还没搞明白,不得已去下个OpenJDK来研究下。本来很不愿意去编绎OpenJDK,因为很有可能做的只是无用功,还有可能要去解决各种找不到链接库的问题。

因为对于Java里的vtable,itable,有个地方还没搞明白,不得已去下个OpenJDK来研究下。

本来很不愿意去编绎OpenJDK,因为很有可能做的只是无用功,还有可能要去解决各种找不到链接库的问题。

不过,没想到虽然有些麻烦,但是出人意料的顺利。


环境:ubuntu 13.10,已经安装了oracle jdk7。


首先下载:

wget http://download.java.net/openjdk/jdk7u40/promoted/b43/openjdk-7u40-fcs-src-b43-26_aug_2013.zip

再用unzip解压。

unzip openjdk-7u40-fcs-src-b43-26_aug_2013.zip


在解压后的文件夹里,可以发现有一个“README-builds.html”的文件,这个就是编绎的说明了。

或者在网上也有:
http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#ubuntu

里面虽然关于ubuntu的最后是9.04版本,不过可以对照着画葫芦:

安装依赖相关的包:

sudo aptitude build-dep openjdk-7

因为我已经安装了oracle jdk,所以就没有再安装openjdk7了,事实证明,不用安装openjdk7也可以。


据README里的说明,先用下面的命令来检查下:

make sanity

如果提示下面的错误:

WARNING: LANG has been set to zh_CN.UTF-8, this can cause build failures. 
         Try setting LANG to 'C'. 
则先执行:

export LANG=C
如果提示JAVA_HOME已经设置了:

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. 
则用unset取消:
unset JAVA_HOME
还要设置下这个环境变量:

export ALT_BOOTDIR=/usr/lib/jvm/java-7-oracle
最后,可以用make all来编绎了。不过编绎一次太慢了。还有下面的这些编绎选项,在Makefile里可以看到:

--- Common Targets ---  \n\
all               -- build the core JDK (default target) \n\
help              -- Print out help information \n\
check             -- Check make variable values for correctness \n\
sanity            -- Perform detailed sanity checks on system and settings \n\
fastdebug_build   -- build the core JDK in 'fastdebug' mode (-g -O) \n\
debug_build       -- build the core JDK in 'debug' mode (-g) \n\
clean             -- remove all built and imported files \n\
clobber           -- same as clean \n\

可以考虑用make fastdebug_build来快速编绎。

最后生成的文件当然在build文件夹下了。

对于debug版,可以用下面的命令来查看编绎出来的java示持哪些JVM的配置项:

./java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version

如果是非debug,则可以使用下面的命令来输出可用的JVM配置项:

./java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version



相关文章
yum安装openJDK1.7
yum安装openJDK1.7
222 0
|
4月前
|
Oracle Java 关系型数据库
yum安装指定版本的openJDK
yum安装指定版本的openJDK
|
C++
编译OpenJDK11,必须使用VS 2017
编译OpenJDK11,必须使用VS 2017
97 0
编译OpenJDK11,必须使用VS 2017
|
Java Windows
使用VS2015编译OpenJDK8
使用VS2015编译OpenJDK8
114 0
OpenJDK8和OpenJDK8u的差异
OpenJDK8和OpenJDK8u的差异
360 0
debian编译openjdk8
debian编译openjdk8
112 0
|
Java
编译OpenJDK8:OpenJDK8与OpenJDK8u运行结果相差很大
编译OpenJDK8:OpenJDK8与OpenJDK8u运行结果相差很大
189 0
编译OpenJDK12:可以用VS2010到VS2017
编译OpenJDK12:可以用VS2010到VS2017
83 0
|
Java Shell 开发工具
【openJDK系列1】macos编译openJDK 8
【openJDK系列1】macos编译openJDK 8
250 0
【openJDK系列1】macos编译openJDK 8
|
监控 Java Spring
从OpenJDK8到OpenJDK11 - StackWalker类
从OpenJDK8到OpenJDK11 - StackWalker类