美文网首页
java编译jdk 7源码

java编译jdk 7源码

作者: 疯狂的冰块 | 来源:发表于2019-02-15 17:14 被阅读6次

    1. 编译环境

    测试环境:Ubuntu 16.04 LST

    已安装JDK:oracle 1.7.0_80-b15

    编译目标:openjdk 7u

    2. 安装依赖

    sudo apt-get update
    sudo apt-get install openjdk-7-jdk ccache make gcc g++ ca-certificates ca-certificates-java gawk libxext-dev libxrender-dev libxtst-dev libasound2-dev libcups2-dev libfreetype6-dev libcups2-dev
    

    注意需要安装ant 的1.9.x版本,1.10.x版本以上需要依赖JDK8,这里编译JDK7 必须安装1.9.x

    ant 官网:https://ant.apache.org/

    ant-1.9.13的下载地址:

    http://mirror.cc.columbia.edu/pub/software/apache//ant/binaries/apache-ant-1.9.13-bin.zip

    3. 下载源码

    # 安装jdk的版本控制系统hg
    sudo apt install mercurial
    # 克隆项目
    hg clone http://hg.openjdk.java.net/jdk7u/jdk7u
    # 进入项目
    cd jdk7u
    # 下载源码
    sh get_source.sh
    

    4. 检测环境是否搭建完毕

    运行命令:

    export LANG=C
    unset JAVA_HOME
    unset CLASSPATH
    

    检测当前环境是否成功:

    make sanity
    

    如果有sanity check passed代表成功!

    5. 开始编译

    在openjdk 源代码目录创建make.sh文件,文件内容如下oracle jdk要根据不同机器进行更改,还有cpu内核数量,编译结果存放路径

    需要修改自己的其中的ALT_BOOTDIR

    #!/usr/bin/env bash
    #语言选项,这个必须设置,否则编译好后会出现一个HashTable的NPE错
    export LANG=C
    
    #Bootstrap JDK的安装路径(就是已经安装的JDK的位置)。必须设置 。
    export ALT_BOOTDIR=/usr/jdk7
    
    #允许自动下载依赖
    export ALLOW_DOWNLOADS=true
    
    #并行编译的线程数,设置为和CPU内核数量一致即可
    export HOTSPOT_BUILD_JOBS=4
    export ALT_PARALLEL_COMPILE_JOBS=4
    
    #比较本次build出来的映像与先前版本的差异。这个对我们来说没有意义,必须设置为false,否则sanity检查会报缺少先前版本JDK的映像。如果有设置dev或者DEV_ONLY=true的话这个不显式设置也行。
    export SKIP_COMPARE_IMAGES=true
    
    #使用预编译头文件,不加这个编译会更慢一些
    export USE_PRECOMPILED_HEADER=true
    
    #要编译的内容
    export BUILD_LANGTOOLS=true
    #export BUILD_JAXP=false
    #export BUILD_JAXWS=false
    #export BUILD_CORBA=false
    export BUILD_HOTSPOT=true
    export BUILD_JDK=true
    
    #要编译的版本
    #export SKIP_DEBUG_BUILD=false
    #export SKIP_FASTDEBUG_BUILD=true
    #export DEBUG_NAME=debug
    
    #把它设置为false可以避开javaws和浏览器Java插件之类的部分的build。
    BUILD_DEPLOY=false
    
    #把它设置为false就不会build出安装包。因为安装包里有些奇怪的依赖,但即便不build出它也已经能得到完整的JDK映像,所以还是别build它好了。
    BUILD_INSTALL=false
    
    #编译结果所存放的路径
    export ALT_OUTPUTDIR=/home/ice/jvm/build
    
    #这两个环境变量必须去掉,不然会有很诡异的事情发生(我没有具体查过这些“”诡异的事情”,Makefile脚本检查到有这2个变量就会提示警告“)
    unset JAVA_HOME
    unset CLASSPATH
    
    make 2>&1 | tee $ALT_OUTPUTDIR/build.log
    
    sh make.sh
    

    在笔者的电脑上用了17分钟:

    相关文章

      网友评论

          本文标题:java编译jdk 7源码

          本文链接:https://www.haomeiwen.com/subject/fqemeqtx.html