Linux 编译OpenJDK

CentOS 6.5 i386 平台编译 OpenJDK8 32bit

1.确认Linux中安装了以下包

    make
    gcc
        cloog-ppl cloog-ppl-devel
            ppl ppl-devel
                gmp-devel
        cpp
            mpfr
            mpfr-devel
                gmp-devel
        glibc-devel
            glibc-headers
                kernel-headers
    gcc-c++
        libstdc++-devel
    gdb
    zip
    unzip
    alsa-lib
    alsa-lib-devel
    libXt
    libXt-devel
        libSM-devel
            libICE-devel
            xorg-x11-proto-devel
        libX11-devel
            libXau-devel
            libXdmcp-devel
            libxcb-devel
        xorg-x11-proto-devel
    libXtst
    libXtst-devel
        libXi-devel
        libXext-devel
    libXrender
    libXrender-devel
    cups
    cups-devel
        gnutls-devel
            libgcrypt-devel
                libgpg-error-devel
        krb5-devel
            keyutils-libs-devel
            libcom_err-devel
            libselinux-devel
                libsepol-devel
        zlib-devel
    freetype
    freetype-devel
    libXp
    libXp-devel
    libXpm
    libXpm-devel
    libXi
    libXi-devel
    libffi-devel
    mesa-private-llvm-devel

2.安装llvm

    安装参考地址: http://clang.llvm.org/get_started.html
    详细步骤如下:
    1)、在 http://llvm.org/releases/ 上选择一个版本的llvm,下载其源代码,本文选择的版本是3.4.1,下载有如下文件:
    
        llvm-3.4.1.src.tar.gz
        cfe-3.4.1.src.tar.gz
        clang-tools-extra-3.4.src.tar.gz
        compiler-rt-3.4.src.tar.gz
        libcxx-3.4.src.tar.gz(由于在步骤1中安装gcc-c++时,安装了依赖包libstdc++-devel,因此clang默认用的C++库就是gcc的libstdc++,如果需要用自己的libc++,可以下载此文件进行编译安装即可)
        
    2)、解压上面的文件,然后按照如下步骤进行组织,以保证clang,clang-tools-extra和compiler-rt可以和llvm一起编译
        
        mv cfe-3.4.1.src clang
        mv clang/ llvm-3.4.1.src/tools/

        mv clang-tools-extra-3.4 extra
        mv extra/ llvm-3.4.1.src/tools/clang/

        mv compiler-rt-3.4 compiler-rt
        mv compiler-rt llvm-3.4.1.src/projects/
        
    3)、在llvm-3.4.1.src同一层目录上新建目录build-3.4.1并进入:

        mkdir build-3.4.1
        cd build-3.4.1

    4)、在新建build-3.4.1目录中执行如下命令,对llvm进行编译,这样编译的结果就存放到了build-3.4.1目录中:
    
        chmod u+x ../llvm-3.4.1.src/configure
        ../llvm-3.4.1.src/configure --enable-optimized --enable-targets=host
    
        编译的时候,一定要加上"--enable-optimized --enable-targets=host"优化选项,否则编译出的文件会很大,同时还要耗费很长的时间
      更多configure选项可以通过../llvm-3.4.1.src/configure -help命令查看
        
    5)、执行make\make install安装llvm:
        make -j 4
        make install
        
    6)、可以通过如下命令查看安装是否成功已经安装后的llvm版本信息:
        clang++ -v

3.安装Ant

    解压apache-ant-1.9.4-bin.zip,重命名为Ant,并移动到/myspace/buildjdk/目录中:

    unzip apache-ant-1.9.4-bin.zip
    mv apache-ant-1.9.4 Ant
    mv Ant/ /myspace/buildjdk/
    
    本文默认在/myspace/buildjdk/目录中编译openjdk-8-src-b132-03_mar_2014.zip,因此后续的所有相关文件,都放到此目录中

4.安装JDK7

    按照openjdk-8-src-b132-03_mar_2014.zip所提供的README-builds中的描述,编译openjdk8需要一个jdk7u7之后的版本,但不能够是jdk8,本文选用jdk-7u51-linux-i586.tar.gz
    解压jdk-7u51-linux-i586.tar.gz,重命名为JDK7u51,并放到/myspace/buildjdk/目录中:
    
    tar -zxf jdk-7u51-linux-i586.tar.gz 
    mv jdk1.7.0_51/ JDK7u51
    mv JDK7u51/ /myspace/buildjdk/       

5.解压openjdk

    解压openjdk-8-src-b132-03_mar_2014.zip,重命名为openjdk8b123,将其移动到/myspace/buildjdk/目录中:
    
    unzip openjdk-8-src-b132-03_mar_2014.zip
    mv openjdk openjdk8b123
    mv openjdk8b123/ /myspace/buildjdk/   

6.编译openjdk8

    执行如下命令,在openjdk8b123目录中编译openjdk8:
    
    cd /myspace/buildjdk/openjdk8b123
    
    export PATH=${PATH}:/myspace/buildjdk/Ant/bin
    
    chmod u+x configure
    ./configure --with-boot-jdk=../JDK7u51/ --disable-zip-debug-info  --with-debug-level=slowdebug --with-jvm-variants=server,client --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --with-num-cores=4  --with-target-bits=32 2>&1 | tee configure_all_x86.log
    
    export LANG=C
    make all JOBS=4 LOG=debug  2>&1 | tee make_all_x86.log
    
  通过./configure -help 可以查看configure的更多选项

    编译完成后,通过openjdk8b123目录下的configure_all_x86.log、make_all_x86.log查看详细的日志信息   

7.编译带调试版本的openjdk

    在编译的时候,可以将hotspot/make/linux/makefiles/gcc.make中的OPT_CFLAGS的-O3选项改成-g,或者更为激进一点儿,将makefiles目录下的所有文件的编译优化选项,均改为-g即可

8.文件下载地址

    ant: http://ant.apache.org/
    openjdk: http://download.java.net/openjdk/   

9.参考链接

    llvm安装:
            
    openjdk8编译:
            
    openjdk8调试:
             http://jvm.taobao.org
            
    Linux RPM查找站:
             http://pkgs.org/
            http://rpmfind.net/linux/RPM/   

10.命令汇总

    unzip apache-ant-1.9.4-bin.zip
    mv apache-ant-1.9.4 Ant
    mv Ant/ /myspace/buildjdk/

    tar -zxf jdk-7u51-linux-i586.tar.gz
    mv jdk1.7.0_51/ JDK7u51
    mv JDK7u51/ /myspace/buildjdk/

    unzip openjdk-8-src-b132-03_mar_2014.zip
    mv openjdk openjdk8b123
    mv openjdk8b123/ /myspace/buildjdk/

    cd /myspace/buildjdk/openjdk8b123

    export PATH=${PATH}:/myspace/buildjdk/Ant/bin

    chmod u+x configure
    ./configure --with-boot-jdk=../JDK7u51/ --disable-zip-debug-info --with-debug-level=slowdebug --with-jvm-variants=server,client --with-boot-jdk-jvmargs="-Xlint:deprecation -Xlint:unchecked" --with-num-cores=4  --with-target-bits=32 2>&1 | tee configure_all_x86.log

    export LANG=C
    make all JOBS=4 LOG=debug  2>&1 | tee make_all_x86.log

CentOS 6.0 i386 平台编译 OpenJDK7u40 32bit

1.确认Linux中安装了以下包

    make
    gcc
        cloog-ppl cloog-ppl-devel
            ppl ppl-devel
                gmp-devel
        cpp
            mpfr
            mpfr-devel
                gmp-devel
        glibc-devel
            glibc-headers
                kernel-headers
    gcc-c++
        libstdc++-devel
    gdb
    ant
    zip
    unzip
    alsa-lib
    alsa-lib-devel
    libXt
    libXt-devel
        libSM-devel
            libICE-devel
            xorg-x11-proto-devel
        libX11-devel
            libXau-devel
            libXdmcp-devel
            libxcb-devel
        xorg-x11-proto-devel
    libXtst
    libXtst-devel
        libXi-devel
        libXext-devel
    libXrender
    libXrender-devel
    cups
    cups-devel
        gnutls-devel
            libgcrypt-devel
                libgpg-error-devel
        krb5-devel
            keyutils-libs-devel
            libcom_err-devel
            libselinux-devel
                libsepol-devel
        zlib-devel
    freetype
    freetype-devel
    libXp
    libXp-devel
    libXpm
    libXpm-devel
    libXi
    libXi-devel
    libffi-devel
    mesa-private-llvm-devel

    --以下是本机的安装包
    rpm -qa make gcc  gcc-c++ gdb  zip  unzip alsa-lib alsa-lib-devel  libXt libXt-devel libXtst libXtst-devel libXrender libXrender-devel cups cups-devel freetype freetype-devel  libXp libXp-devel libXpm libXpm-devel libXi libXi-devel libffi-devel
    gcc-c++-4.4.4-13.el6.i686
    libXp-1.0.0-15.1.el6.i686
    libXtst-devel-1.0.99.2-3.el6.i686
    libXt-devel-1.0.7-1.el6.i686
    gdb-7.1-29.el6.i686
    make-3.81-19.el6.i686
    cups-1.4.2-35.el6.i686
    libXrender-0.9.5-1.el6.i686
    libXtst-1.0.99.2-3.el6.i686
    libXpm-3.5.8-2.el6.i686
    gcc-4.4.4-13.el6.i686
    libXi-devel-1.3-3.el6.i686
    cups-devel-1.4.2-35.el6.i686
    libXpm-devel-3.5.8-2.el6.i686
    freetype-2.3.11-5.el6.i686
    alsa-lib-1.0.21-3.el6.i686
    libXi-1.3-3.el6.i686
    alsa-lib-devel-1.0.21-3.el6.i686
    libXp-devel-1.0.0-15.1.el6.i686
    unzip-6.0-1.el6.i686
    libXrender-devel-0.9.5-1.el6.i686
    zip-3.0-1.el6.i686
    freetype-devel-2.3.11-5.el6.i686
    libXt-1.0.7-1.el6.i686

2.安装Ant

    解压apache-ant-1.9.4-bin.zip,本文将其解压到/myspace/buildjdk/中,并将解压后的文件夹重命名为Ant

    本文默认在/myspace/buildjdk/目录中编译openjdk-7u40-fcs-src-b43-26_aug_2013.zip,因此后续的所有相关文件,都放到此目录中

3.安装JDK6:jdk-6u45-linux-i586.bin

    本文将其安装到/myspace/buildjdk/JDK6u45目录中
    最好选择JDK6,JDK7会出现一个动态链接库的链接BUG: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7116189

4.准备编译文件

    解压openjdk-7u40-fcs-src-b43-26_aug_2013.zip,本文将其解压到/myspace/buildjdk/中,并将解压后的openjdk文件夹重命名为Openjdk7u40

5.配置Drops文件:JAXP和JAX_WS

    jaxp-1_4_5-unittests.zip
    jaxp145_01.zip
    jdk7-jaxws2_2_4-b03-2011_05_27.zip
    jdk7-jaf-2010_08_19.zip
        
    创建/myspace/buildjdk/openjdk7u40/java/devtools/share/jdk7-drops目录,将上面四个文件拷贝到该目录中

6.配置编译时环境变量并编译OpenJDK7

    export PATH=${PATH}:/myspace/buildjdk/Ant/bin
    export ZIP_DEBUGINFO_FILES=0
    export LANG=C
    export DEBUG_NAME=debug
    export ALLOW_DOWNLOADS=true
    export ARCH_DATA_MODEL=32
    export ALT_DEVTOOLS_PATH=/usr/bin

    export ALT_BOOTDIR=/myspace/buildjdk/JDK6u45
    export ALT_JDK_IMPORT_PATH=/myspace/buildjdk/JDK6u45
    export ALT_DROPS_DIR=/myspace/buildjdk/OpenJDK7u40/java/devtools/share/jdk7-drops

    make sanity 2>&1 | tee make_sanity_x86.log
    make 2>&1 | tee make_x86.log

    --重编译的话,先清除
    make clean 2>&1 | tee make_clean_x86.log

7.文件下载地址

    centos: http://mirrors.163.com/centos/
    ant: http://ant.apache.org/
    
    openjdk-7u40-fcs-src-b43-26_aug_2013.zip: http://download.java.net/openjdk/jdk7u40/promoted/b43/
    jaxp-1_4_5-unittests.zip : http://download.java.net/jaxp/1.4.5
    jaxp145_01.zip: http://download.java.net/jaxp/1.4.5
    jdk7-jaxws2_2_4-b03-2011_05_27.zip: http://download.java.net/glassfish/components/jax-ws/openjdk/jdk7
    jdk7-jaf-2010_08_19.zip: https://java.net/downloads/jax-ws/JDK7/

8.参考链接

    openjdk7编译:
            http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html
            
    openjdk7调试:
            http://jvm.taobao.org
            
    Linux RPM查找站:

            http://pkgs.org/

            http://rpmfind.net/linux/RPM/

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值