CentOS 编译 openjdk,centos编译openjdk


1. 概述

    <<深入理解Java虚拟机--JVM高级特性与最佳实践>>第一章就谈到自己编译jdk,来吧。

2.  编译环境

    VMware12

    CentOS-7-x86_64-Everything-1611

3. 软件准备

    Bootstrap JDK:  jdk-7u79-linux-x64.tar.gz

    OpenJDK:  https://jdk7.java.net/source.html

4. 编译依赖

  4.1 安装alsa软件包

       yum -y install alsa-lib-devel

  4.2 安装 cups-devel

      yum -y install cups-devel

  4.3 安装lib相关库

      yum -y install libX*

  4.4 安装gcc

      yum -y install gcc gcc-c++

  4.5 安装freetype

       4.5.1 下载 http://rpm.pbone.net/index.php3/stat/4/idpl/26641422/dir/centos_7/com/freetype-2.4.11-9.el7.x86_64.rpm.htm

       4.5.2 安装  rpm -ivh freetype-2.4.11-9.el7.x86_64.rpm

  4.6 安装ant

        yum -y install ant

        说明: 这时会将openjdk作为依赖进行安装; 安装完, java -version| ant -version看看

                && 使用ant.tar.gz解压方式安装 不要安装配置jdk依赖

  4.7 安装libstdc++

        yum -y install libstdc++-static

        说明: 此安装为解决编译时出错 ERROR: Cannot chcon libjvm.so

 

5. 环境变量配置 vim /etc/profile

    export CLASSPATH

  export JAVA_HOME

    export LANG=C

    export ALT_BOOTDIR=/usr/java/jdk1.7.0_76

    export ALLOW_DOWNLOADS=true

    export USE_PRECOMPILED_HEADER=true

    export ARCH_DATA_MODEL=64

    export HOTSPOT_BUILD_JOBS=4

    export ALT_PARALLEL_COMPILE_JOBS=4

    export SKIP_DEBUG_BUILD=false

    export SKIP_FASTDEBUG_BUILD=true

    export DEBUG_NAME=debug

    export ALT_OUTPUTDIR=/usr/java/openjdk/build

6.  编译检查

     make sanity

     若输出结果为:Sanity check passed,表示设置正确

7.  执行编译

     make

8.  编译时可能出现的其他问题

     8.1 ./gamma: relocation error: /usr/java/jdk1.7.0_76/jre/lib/amd64/libjava.so:

            删除 /usr/java/openjdk/hotspot/make/linux/Makefile文件中 所有test_gamma
            (vim Makefile-> /test_gamma查找->:%s/&& \.\/test_gamma//g替换所有)

     8.2  Error: time is more than 10 years from present:

            /usr/java/openjdk/jdk/src/share/classes/java/util/CurrencyDate.properties文件中所有时间改为近期

            vim 指令   /20..-搜索-> i 修改 -> esc退出i -> n下一个位置 -> i 直到全部改完

     8.3  其他

            make clean 可以清一下之前编译

9. 结果图

   

10. debug版jdk

     /usr/java/openjdk/build-debug/j2sdk-image下的内容为debug版jdk

     将他覆盖原oracle jdk作为系统jdk,配置环境变量JAVA_HOME CLASSPATH PATH

   

相关内容