CentOS7编译openjdk7

CentOS7编译openjdk7

  • 环境介绍
    centos:CentOS-7-x86_64-DVD-1708
    openjdk:openjdk-7u75-src-b13-18_dec_2014.zip,下载地址:
    https://download.java.net/openjdk/jdk7u75/ri/openjdk-7u75-src-b13-18_dec_2014.zip
    jdk-7u80-linux-x64.tar.gz:用来编译openjdk的jdk

  • 编译过程

  • 查询centos7自带的jdk1.8
    pm -qa | grep java 命令来查询出系统自带的jdk
    [root@localhost ~]# rpm -qa | grep java
    java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
    java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64
    javapackages-tools-3.4.1-11.el7.noarch
    java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.x86_64
    tzdata-java-2017b-1.el7.noarch
    java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
    python-javapackages-3.4.1-11.el7.noarch

  • 卸载centos7自带的jdk1.8
    通过 rpm -e –nodeps 后面跟系统自带的jdk名 这个命令来删除系统自带的jdk
    [root@localhost ~]# rpm -e –nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
    [root@localhost ~]# rpm -e –nodeps java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
    [root@localhost ~]# rpm -e –nodeps java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64
    [root@localhost ~]# rpm -e –nodeps java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.x86_64
  • 构建编译环境
    [root@localhost ~]# yum install build-essential gawk m4 openjdk-6-jdk libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev xllproto-print-dev binutils libmotif3 libmotif-dev ant
    [root@localhost ~]# sudo yum install gcc-c++ libstdc++-devel
  • 设置环境变量
    [root@localhost local]# vi ~/.bashrc
    语言选项,这个必须设置,否则编译好后会出现一个HashTable的NPE错
    export LANG=C
    Bootstrap JDK的安装路径。必须设置
    export ALT_BOOTDIR=/usr/local/java/jdk
    允许自动下载依赖
    export ALLOW_DOWNLOADS=true
    并行编译的线程数,设置为和CPU内核数量一致即可
    export HOTSPOT_BUILD_J0BS=6
    export ALT_PARALLEL_COMPILE_JOBS=6
    比较本次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=fa1se
    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=/usr/local/openjdk/build
    export PATH= P A T H : ALT_BOOTDIR/bin
    这两个环境变量必须去掉,不然会有很诡异的事情发生(我没有具体查过这些 “诡异的
    事情” ,Makefile脚本裣查到有这2个变量就会提示警告)
    unset JAVA_HOME
    unset CLASSPATH
    [root@localhost local]# source ~/.bashrc
  • 创建一个目录
    [root@localhost local]# mkdir /usr/local/openjdk/build
  • 检查前面设置是否全部正确
    [root@localhost openjdk]# make sanity
    错误:ERROR: You seem to not have installed ALSA 0.9.1 or higher.
    解决:[root@localhost openjdk]# sudo yum install alsa-lib-devel
    错误:ERROR: You do not have access to valid Cups header files.
    解决:[root@localhost openjdk]# sudo yum install cups-devel.x86_64
    错误:ERROR: FreeType version 2.3.0 or higher is required.
    解决:[root@localhost openjdk]# sudo yum install freetype-devel
    出现下面内容 ,通过
    Previous JDK Settings:
    PREVIOUS_RELEASE_PATH =
    ALT_PREVIOUS_RELEASE_PATH =
    PREVIOUS_JDK_VERSION = 1.6.0
    ALT_PREVIOUS_JDK_VERSION =
    PREVIOUS_JDK_FILE =
    ALT_PREVIOUS_JDK_FILE =
    PREVIOUS_JRE_FILE =
    ALT_PREVIOUS_JRE_FILE =
    PREVIOUS_RELEASE_IMAGE =
    ALT_PREVIOUS_RELEASE_IMAGE =
    Sanity check passed.
  • 编译
    [root@localhost ~]# make
    错误:/usr/bin/ld: cannot find -lstdc++
    解决:[root@localhost openjdk]# sudo yum install libstdc++-static.x86_64
    错误:ERROR: Cannot chcon libjvm.so
    解决:make clean 后再make
    错误:Error: time is more than 10 years from present: 1136059200000
    解决:[root@localhost openjdk]# vi jdk/src/share/classes/java/util/CurrencyData.properties
    将所有的日期改为10年内
    错误:/usr/bin/ld: cannot find -lX11
    解决:[root@localhost openjdk]# sudo yum install libX11-devel
    错误:fatal error: X11/Intrinsic.h: No such file or directory
    解决:[root@localhost openjdk]# yum install libX*
  • 编译成功
    #– Build times ———-
    Target all_product_build
    Start 2018-06-24 02:30:16
    End 2018-06-24 02:49:23
    00:00:26 corba
    00:00:10 hotspot
    00:00:04 jaxp
    00:00:07 jaxws
    00:18:14 jdk
    00:00:06 langtools
    00:19:07 TOTAL
    make[1]: Leaving directory `/usr/local/openjdk’

猜你喜欢

转载自blog.csdn.net/yuyufeiyanwu/article/details/80797730