Linux下编译openJDK源码

学习《深入理解java虚拟机》,开篇先编译一个openJDK来了解JDK的源码。
书本你上提供了Mac OS和Linux系统下编译openJDK的方法步骤,并且在windows系统下编译openJDk也十分麻烦。
于是我就自己安装了一个Linux系统的虚拟机,下面主要记录我安装虚拟机、以及编译openJDK的完整过程。
主要系统环境和版本
系统版本:Ubuntu 16.04
openJDK版本: openjdk-7u40
JDK版本:1.7.0_79
1、虚拟机的安装
关于ubuntu虚拟机的安装步骤,网上有各种教程,这里提供几个链接,读者可以根据以下链接教程,进行学习ubuntu虚拟机的安装。
http://jingyan.baidu.com/article/0320e2c1ef9f6c1b87507bf6.html
http://jingyan.baidu.com/article/14bd256e0ca52ebb6d26129c.html
1.1疑难杂症解决方案
1、安装好后的虚拟机不能上网?
在虚拟机设置中进行NAT设置就可以了。
这里写图片描述
2、虚拟机终端如何打开?
进入虚拟机界面,使用快捷键 Ctrl+Alt+T 快捷打开虚拟机终端程序!
这里写图片描述
3、 如何将主机中的文件粘贴到vmware虚拟机
虚拟机–>设置
这里写图片描述
2、ubuntu虚拟机下载并编译运行openJDK
以下操作基本上使用ubuntu终端进行下载安装。
具体参考网址如下:
http://openjdk.java.net/install/index.html
2.1下载openJDK(选择的下载版本是openJDK1.7)

$ sudo apt-get install openjdk-7-jre
执行该命令行之后,出现如下问题
Package openjdk-7-jre is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
刚刚开始玩linux,这个不知道如何解决,于是就讲主机中下载的openJDK源码手动拷贝进了Ubuntu系统中。

2.2 下载编译openJDK的相关依赖
这里先推荐几个我参考的博客
http://cduym.iteye.com/blog/1892416
http://blog.csdn.net/ge1mina023/article/details/48930855
由于编译openJDK版本有所不同,所以在具体下载依赖时候需要具体情况具体分析。下面是我使用的依赖软件下载

安装gcc、g++、make等
sudo apt-get install build-essential    
安装ant 1.7以上
sudo apt-get install ant
安装XRender
sudo apt-get install libxrender-dev
sudo apt-get install xorg-dev
安装alsa
sudo apt-get install libasound2-dev (daozhe)
Cups
sudo apt-get install libcups2-dev
安装零碎的工具包
sudo apt-get install gawk zip libxtst-dev libxi-dev libxt-dev

在安装ubuntu的时候,发现系统自带了JDK1.8版本,感觉编译openJDK1.7可能会有异常,于是就自行安装了JDK1.7版本
安装步骤可以参照以下博客:
http://blog.csdn.net/gobitan/article/details/24322561
准备完环境,那么我们就可以编译源代码了!
2.3准备编译代码
1、要创建一个build.sh的脚本文件
可以选择用命令行的方式来创建,也可以直接用图形化界面进行创建,因为对linux命令行比较陌生,所有选择手动进行创建。
在文件中编辑如下内容:

 #!/bin/bash  
 #设置语言  
  export LANG=C  
  export ALT_BOOTDIR=/usr/lib/jvm/jdk1.7.0/ 
  #允许自动下载依赖包  
  export ALLOW_DOWNLOADS=true  

  #使用预编译头文件,不加这个编译会更慢  
  export USE_PRECOMPILED_HEADER=true  

  #要编译的内容  
  export BUILD_LANGTOOLS=true  
  export BUILD_JAXP=true  
  export BUILD_JAXWS=true  
  export BUILD_CORBA=true  
  export BUILD_HOSTPOT=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=/home/lzl/openjdk/build  

  unset CLASSPATH  
  unset JAVA_HOME  
  make 2>&1 | tee $ALT_OUTPUTDIR/build.log  

使用make sanity命令看build.sh会不会报错。
出现以下问题
/usr/bin/gawk: not found

make[1]: Entering directory `/home/senrayi/work/project'
/bin/sh: 1: /bin/gawk: not found
make[1]: *** [setup] Error 127
make[1]: Leaving directory `/home/senrayi/work/project'
make: *** [loader] Error 2
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

百度了一下gawk,也没有弄太明白,好像也是个依赖的软件吧。于是就进行下载

$ sudo apt-get install gawk

然后,还是一系列的报错

Failed to fetch http://101.44.1.126/files/62300000049EC504/cdn.packages.deepin.com/deepin/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_amd64.deb  Writing more data than expected (398653 > 398064)

依旧下载不了gawk,这下想了个绝招,在主机上下载个ubuntu版本的gawk,手动进行安装!
https://launchpad.net/ubuntu/+source/gawk
这下就可以通过编译了。
这里写图片描述
具体编译时候遇到的问题,接下来会总结并分享的!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值