zoukankan      html  css  js  c++  java
  • JVM源码---教你傻瓜式编译openjdk7(JAVA虚拟机爱好者必看)

    LZ经过一个星期断断续续的研究,终于成功的搞定了JDK的成功编译与调试。尽管网络上的教程也有不少,包括源码中也有自带的编译步骤说明,但真正自己动手的话,还是会遇到不少意料之外的错误。

              为了方便各位猿友编译,LZ临时学了一下shell的皮毛,写了三个shell的小脚本,只要执行这三个小脚本,你就会获得一个自己编译出来的JDK。这个JDK是可以调试的JDK,这对于我们研究JAVA虚拟机是非常重要的一项工作。

              好了,接下来LZ就一一将步骤列出,非常简单,真正的傻瓜式编译步骤。如果LZ哪里说的不够清楚,希望猿友们提出来或者在下面留言提问也行,限于周末,LZ必会有问必答。倘若猿友们编译成功,也别忘了回过头来给LZ推荐一下,让更多的人参与到JVM源码的研究当中。

     

    一、安装linux系统

     

              1、下载一个虚拟机软件VMware,相信大部分人都不会陌生,然后正确的安装即可,具体的下载地址和安装步骤并不难,各位在网络上可以找到大量的资料。

              2、在安装好的VMware上安装一个ubuntu-10.04版本的linux系统,这个系统也非常好安装,网络上同样也有大量的资料供各位参考。

     

    二、更改root用户密码,下载JDK和ant

     

              3、安装好系统之后,选择VMware的ubuntu-10.04系统启动,成功之后,打开一个命令行终端,使用下面的命令更改root用户密码,之后注销当前用户使用root登陆。

    root@ubuntu:/opt# sudo passwd root
    Enter new UNIX password: 
    Retype new UNIX password: 
    passwd: password updated successfully

              4、切换成root账户后,我们需要下载两个安装包,一个是JDK6u18,一个是ant1.9.2,将两个文件存放在一个文件夹下,LZ存放的是默认路径/root/Downloads,文件名必须与LZ的文件名保持一致。

    root@ubuntu:~/Downloads# ls
    apache-ant-1.9.2-bin.zip  jdk-6u18-linux-i586.bin

     

    三、执行小脚本

              

              5、在任何一个地方(比如LZ是在/opt下)新建三个文件,将以下内容分别复制进去。

    root@ubuntu:/opt# vi build_openjdk_1
    复制代码
    #!/bin/bash
    cd /opt
    if [ -d "/opt/openjdk" ]; then
      rm -rf /opt/openjdk
    fi
    mkdir openjdk
    cd /opt/openjdk
    sudo apt-get install mercurial
    hg clone http://bitbucket.org/pmezard/hgforest-crew
    echo "[extensions]" >> /opt/openjdk/hgforest-crew/.hg/hgrc
    echo "forest=/opt/openjdk/hgforest-crew/forest.py" >> /opt/openjdk/hgforest-crew/.hg/hgrc
    echo "fetch=" >> /opt/openjdk/hgforest-crew/.hg/hgrc
    cd /opt/openjdk/hgforest-crew/.hg
    hg fclone http://hg.openjdk.java.net/jdk7/jdk7
    mv /opt/openjdk/hgforest-crew/.hg/jdk7 /opt/openjdk/jdk7
    复制代码
    root@ubuntu:/opt# vi build_openjdk_2
    复制代码
    #!/bin/bash
    sudo apt-get install build-essential
    sudo apt-get install libxrender-dev
    sudo apt-get install xorg-dev
    sudo apt-get install libasound2-dev
    sudo apt-get install libcups2-dev
    sudo apt-get build-dep openjdk-6
    sudo apt-get install openjdk-6-jdk
    cd $1
    if [ -d "/usr/lib/jvm/jdk1.6.0_18" ]; then
       rm -rf /usr/lib/jvm/jdk1.6.0_18
    fi
    mod +x jdk-6u18-linux-i586.bin
    sudo ./jdk-6u18-linux-i586.bin
    mv $1/jdk1.6.0_18 /usr/lib/jvm/jdk1.6.0_18
    unzip apache-ant-1.9.2-bin.zip
    mv $1/apache-ant-1.9.2 /opt/openjdk/apache-ant-1.9.2
    复制代码
    root@ubuntu:/opt# vi build_openjdk_3
    复制代码
    #!/bin/bash
    export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_18
    export ANT_HOME=/opt/openjdk/apache-ant-1.9.2
    export LANG=C
    export ALT_BOOTDIR=/usr/lib/jvm/jdk1.6.0_18
    unset JAVA_HOME
    export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/jdk1.6.0_18
    unset CLASSPATH
    cd /opt/openjdk/jdk7
    make sanity && make debug_build BUILD_JAXWS=false BUILD_JAXP=false
    复制代码

              6、赋予权限,输入以下三个命令。

    root@ubuntu:/opt# chmod +x build_openjdk_1
    root@ubuntu:/opt# chmod +x build_openjdk_2
    root@ubuntu:/opt# chmod +x build_openjdk_3

              7、执行三个文件,输入以下三个命令,第二个命令后面的参数是你JDK和ant下载后存放的路径。

    root@ubuntu:/opt# ./build_openjdk_1
    root@ubuntu:/opt# ./build_openjdk_2 /root/Downloads/
    root@ubuntu:/opt# ./build_openjdk_3

              8、倘若一切顺利的话,三个命令执行下来应该大约需要四五个小时,编译成功将出现以下内容。               

    复制代码
    -- Build times ----------
    Target debug_build
    Start 2013-09-06 22:24:59
    End   2013-09-07 00:03:39
    00:02:44 corba
    01:07:22 hotspot
    00:27:02 jdk
    00:01:30 langtools
    01:38:40 TOTAL
    -------------------------
    make[2]: Leaving directory `/opt/openjdk/jdk7'
    make[1]: Leaving directory `/opt/openjdk/jdk7'
    复制代码

                输入以下命令,可以看一下我们编译出的JDK版本。

    root@ubuntu:/opt/openjdk/jdk7/build/linux-i586-debug/j2sdk-image/bin# /opt/openjdk/jdk7/build/linux-i586-debug/j2sdk-image/bin/java -version
    openjdk version "1.7.0-internal-debug"
    OpenJDK Runtime Environment (build 1.7.0-internal-debug-root_2013_09_06_22_24-b00)
    OpenJDK Client VM (build 21.0-b17-jvmg, mixed mode)            

                 

    小提示

     

               1、三个脚本的执行都会非常慢,因此过程中需要耐心等待,其中第一个脚本是下载openjdk源码,第二个是安装编译JDK需要的依赖包,第三个则是真正的编译过程。

               2、第一和第二个脚本因为都是在下载,因此速度与网速有直接关系。任何一个脚本中途执行失败的话,都可以重复执行,不会影响JDK的编译。

               3、如果是从零开始编译,那么花费的时间会比较久,请务必拿出你的耐心来,莫要中途而废。 

                             


    版权声明


    作者:zuoxiaolong(左潇龙)

    出处:博客园左潇龙的技术博客--http://www.cnblogs.com/zuoxiaolong

    您的支持是对博主最大的鼓励,感谢您的认真阅读。

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    centos 安装 TortoiseSVN svn 客户端
    linux 定时任务 日志记录
    centos6.5 安装PHP7.0支持nginx
    linux root 用户 定时任务添加
    composer 一些使用说明
    laravel cookie写入
    laravel composer 安装指定版本以及基本的配置
    mysql 删除重复记录语句
    linux php redis 扩展安装
    linux php 安装 memcache 扩展
  • 原文地址:https://www.cnblogs.com/Zyf2016/p/6337763.html
Copyright © 2011-2022 走看看