美文网首页
ubuntu 14.04下编译JDK7

ubuntu 14.04下编译JDK7

作者: 山间听雨者 | 来源:发表于2016-06-05 13:44 被阅读1417次

    编译前准备

    1. 下载openjdk

    官方建议是使用Mercurial来下载代码,Mercurial是一款免费的、跨平台的、分发源码的管理工具。但由于openjdk源码是放在国外的服务器上的,下载及其缓慢,所以我建议直接下载源码压缩包。我下载的源码压缩包是openjdk7。

    openjdk-7u40

    2. 解压源码压缩包,解压后的目录结构

    3. 安装jdk的依赖库

    (1)、如果系统中已经安装了jdk和ant,运行:sudo apt-get install build-essential gawk m4 libasound-devlibcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutilslibmotif3 libmotif-dev .

    (2)、如果系统中还未安装jdk和ant,运行:sudo apt-get install build-essential gawk m4 openjdk-7-jdklibasound-dev libcups2-dev libxrender-dev xorg-dev xutils-devx11proto-print-dev binutils libmotif3 libmotif-dev ant.

    说明:安装的jdk是作为编译openjdk时的java环境的,因为openjdk中大部分代码还是java的,所以需要一个启动的jdk,下载的启动(bootstrap)jdk一定要在jdk6 update 14之后的版本。需要下载的ant版本必须大于或等于1.7.1.

    4. 设置系统的环境变量,以满足openjdk的编译

    sudo gedit /etc/bash.bashrc

    在/etc/bash.bashrc中增加如下内容:


    #语言选项这个必须设置,否则编译好后会出现一个hashtable的npe错

    export LANG=C

    #设置bootstrap JDK的安装路径,必须设置

    exportALT_BOOTDIR=/home/java/jdk/jdk1.7.0_45/

    #运行自动下载依赖

    export ALLOW_DOWNLOADS=true

    #

    export SKIP_COMPARE_IMAGES=true

    #使用预编译头,不加这个编译会慢一些

    export USE_PRECOMPILED_HEADER=true

    #设置要编译的内容

    exportBUILD_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

    #编译结果所存放的路径

    exportALT_OUTPUTDIR=/home/fengyu_daniel/fengyu/java/openjdk/

    #必须设置

    unset JAVA_HOME

    unset CLASSPATH


    正式编译阶段

    1. 进入解压后的openjdk源码根目录:cd /home/openJdk/openJdk/

    2. 重定向日志信息,保留编译期间的日志:make 2>&1 | tee $ALT_OUTPUTDIR/build.log

    3. 检查之前设置的环境变量是否正确:make sanity;如果环境变量设置正确,结果如图:

    编译前环境设置检查结果

    4. 接下来进行编译:make

    说明:如果编译的时候报错了,尤其时关于langtools/make/build.xml的错误,可能是因为bootstrap jdk的版本的原因,可以换一个版本低于openjdk的版本。openJdk7的bug修复。编译期间出现一个时间的错误,这是openjdk7u40的一个bug,替换源码目录下的对应的几个文件内容就可以编译了,见地址:http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/rev/74a70385c21d#l11.1.编辑比较耗时,在我本人的笔记本上大约编译铃45分钟。

    5. 编译成功的结果如图:

    控制台编译结果 编译结果目录结构

    检测编译结果

    1. 结果路径下的j2sdk-image目录下的所有文件就是我们常见的jdk。

    2. 进入目标路径下的j2sdk-image目录:java -version

    如果编译的jdk没有错误,那结果如图:

    相关文章

      网友评论

          本文标题:ubuntu 14.04下编译JDK7

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