• 编绎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 ---  
    
    all               -- build the core JDK (default target) 
    
    help              -- Print out help information 
    
    check             -- Check make variable values for correctness 
    
    sanity            -- Perform detailed sanity checks on system and settings 
    
    fastdebug_build   -- build the core JDK in 'fastdebug' mode (-g -O) 
    
    debug_build       -- build the core JDK in 'debug' mode (-g) 
    
    clean             -- remove all built and imported files 
    
    clobber           -- same as clean 
    


    可以考虑用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


  • 相关阅读:
    IDEA插件和快捷设置
    漫谈虚拟内存
    漫谈进程和线程
    漫谈计算机语言
    初识Python
    数据库物理设计
    漫谈计算机体系
    数据库逻辑设计
    NLP中几种分词库的简单使用(Python)
    ML————朴素贝叶斯原理和SKlearn相关库
  • 原文地址:https://www.cnblogs.com/riasky/p/3433139.html
Copyright © 2020-2023  润新知