JAVA虚拟机学习1---OpenJDK的编译

-------《C++编程思想》编程准则1:首先让程序运行,然后追求速度。即使我们确定这一段程序非常重要,而且是我们系统中的瓶颈。不要优化,首先用尽可能简单的设计使程序可以运行,如果速度不满足要求,再对其进行分析。我们总是能够发现“我们的”瓶颈并不是问题所在,节省我们的时间做真正有意义上的事。


                                OpenJDK的编译


  一 OpenJDK

      OpenJDK是JDK的开放源码版本,是java语言的发明公司Sun Microsystems. Inc,成立的一个开源项目。由于版本关系,导致openJdk源代码不完整,所以它的功能要远少于SUN JDK,不包含:Brower Plugin,Java web Start,以及java控制面板,这些功能在OpenJDk中是找不到的,这些不能开往的源代码,以插件的形式提供给OpenJDK编译时使用,OpenJDK6的时候,Icedtea项目给它这些不完整的部分开发了相同功能的源代码。开始和SunJDK一样完整。另外注意的是,OpenJDK只包含最精简的JDK,如果使用Icetea补丁的OpenJDK, openJDK 命令“java -version”显示的不是OpenJDK,而是java.


二 安装环境准备

     本文选用的是在virtualbox中,使用ubuntu 14.04 32位版本镜像,主系统是ubuntu 16.04 64位,为什么我本来真机就是ubuntu ,还要安装个虚拟机?闲得慌?这个后面说。使用linux系统(ubuntu)进行构建,是相当方便的,天生具备各种工具链,如果使用window,要到处找c++编译器,以及各种缺失的编译所要的工具包和编译环境,安装一个普通jdk,或者openjdk到系统上,配置好JAVA_HOME,JRE_HOME,CLASSPATH。这是我的配置:
 export JAVA_HOME=/opt/jdk
 export JRE_HOME=${JAVA_HOME}/jre
 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
为什么要安装一个新的JDK在机器上,后面有说

三 安装步骤

  源代码下载有两种方式,A是直接下整包源代码 B 使用OPENJDK 官方提供的工具Mercurial(hg)类似git进行下载
A 直接下整包源代码,好处是快方便省事,不好的地方是看不到官方修改的release not.不过,还是建议用这种方式,因为B方式,有很多时候,是下载不下来的,不知道原因。
  直接到网址:http://download.java.net/openjdk/jdk8/

B 使用Mercurial(hg).下载
  OpenJDK的源文件版本库基于Mercurial(hg),它是一个与Git相似的分布式版本控制工具。在Ubuntu中安装Mercurial只需要执行命令
 ---安装版本管理工具
1)  $ sudo apt-get install mercurial -y
---下载OpenJDK 框架    
2)  $ hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-dev/ jdk8-src
---进入框架目录
3)  $ cd jdk8-src
----OpenJDK的源代码版本库实际上包含多个独立的子版本库,需要执行如下脚本去分别下载各个子版本库的源代码,

4)  $ sh get_source.sh
# Repositories:  corba jaxp jaxws langtools jdk hotspot nashorn
    ....
         

四 构建

    1) 设置环境变量

    首先,要说一下,构建openJDK要一个药引,这个药引叫boot jdk,这个工具一般已经集成在普通的jdk中了,所以,安装一个普通的JDK到系统上,然后配置好环境变量就好。然后继续在.bashrc 里边添加以下变量。

    

export USE_PRECOMPILED_HEADER=true
export SKIP_DEBUG_BUILD=false  
export SKIP_FASTDEBUG_BUILD=true  
export DEBUG_NAME=debug   
export LANG=C   
unset CLASSPATH  
unset JAVA_HOME

  2) 配置编译环境

   $ sh configure 或者 bash configure
该过程会检测构建环境是否符合要求,如有问题,它会给出提示。比如,
configure: error: Could not find X11 libraries. You might be able to fix this by running 'sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev'.
后面可能,大部分还有继续安装的缺失的工具,都可以通过提示apt安装即可。每次安装完毕,再次重新执行上述configure命令,直到没有报错为止。不要使用apt安装ccashe,ubuntu的软件库里,这个软件太旧了。


   3) 安装高速C/C++编译工具(ccache)  

   https://ccache.samba.org/
   在处理一些规模相对较大的工程时,编译花费的时间可能会很长。有时候我们会经常一遍一遍地编译相同的程序,此时,有了ccache情况就好多了。它将在第一遍编译时多花几秒钟,但接下来就会使编译成倍(5-10倍)的提速。
   下载源码包后,解压缩,进入包。执行以下命令:
    $./configure
    $make
    $make install
    $sudo cp ccache /usr/local/bin/
    $sudo ln -s ccache /usr/local/bin/gcc
    $sudo ln -s ccache /usr/local/bin/g++
    $sudo ln -s ccache /usr/local/bin/cc
    $sudo ln -s ccache /usr/local/bin/c++

 4) 回到openJDK源码包内进行构建执行以下命令

    $make all DEBUG_BINARIES=true
    接下来就是慢长的等待,快的20分钟,我的由于是虚拟机,机器cpu又比较慢,用了40分钟。

     完成后,在当前路径下会生成一个build目录,构建好的JDK就在那里面。新JDK的具体路径类似于build/linux-x86-normal-server-release/jdk/bin。可以执行如下命令去测试这个JDK,这是我修改了JVM后,加入了自己的名字定制的,哈哈。


 

五 后记:

      当时我的机器是ubuntu 16.04 64位,不论怎么构建,都出错,google了一下,没有碰到中国人有说到过这问题,只发现2013年-2014年有几个老外的贴提起过,其中是一个是debian系统的测试员,今天我还特地写了信问他,不知道这个人离职没有。。。。下面这个link是debian的bug系统里那个问题,也是我碰到的问题。
  https://lists.debian.org/debian-java/2014/05/msg00024.html
      所以,最后,我只能在ubuntu 里边使用虚拟机,重新安装了一个32位的低版本的14.04,然后就没问题了。可能是g++过高?

  

续:

       后电脑重装ubuntu 14.04 64位,全程无问题。看来编译OpenJdk实在很挑剔环境。


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值