Linux下编译openJDK源码

来源:互联网 发布:yum mirrorlist 编辑:程序博客网 时间:2024/05/16 18:57

学习《深入理解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, oris 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安装XRendersudo apt-get install libxrender-devsudo apt-get install xorg-dev安装alsasudo apt-get install libasound2-dev (daozhe)Cupssudo 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 foundmake[1]: *** [setup] Error 127make[1]: Leaving directory `/home/senrayi/work/project'make: *** [loader] Error 2sudo 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
这下就可以通过编译了。
这里写图片描述
具体编译时候遇到的问题,接下来会总结并分享的!

0 0
原创粉丝点击