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
这下就可以通过编译了。
具体编译时候遇到的问题,接下来会总结并分享的!
- Linux下编译openJDK源码
- CentOS7下编译OpenJDK源码
- Linux下编译OpenJdk实战
- Linux环境编译jvm源码openjdk
- linux(Ubuntu)下编译openJDK
- Linux下编译OpenJDK源码以及在Eclipse中调试Hotspot虚拟机
- winXP下编译openjdk
- CentOS7下编译openjdk
- Ubuntu 下编译 openJDK
- Linux 编译OpenJDK
- centos6.9 编译openJdk源码
- Ubuntu 下编译OpenJDK,OpenJDk debug,OpenJDk fastdebug
- ubuntu下编译openJdk - 6
- Linux环境编译安装OpenJDK
- ubuntu 编译android 源码时Openjdk 问题
- Linux系统下卸载openJDK
- Ubuntu 12.04 下编译OpenJDK 7问题
- win10-x64系统下编译OpenJDK
- TCP滑动窗口协议
- 高度分装的BaseAdapter
- STL vector用法介绍
- Android 标题栏与状态栏同色
- HDU 5787 (数位dp)(2016多校联赛)
- Linux下编译openJDK源码
- ajax的同步与异步
- 并发编程二:普通锁
- 《VR入门系列教程》之20---使用Oculus移动端SDK
- Android中常见的内存泄漏
- static和const,及final关键字的使用
- 4.Android使用ksoap2-android调用WebService
- Android——获取手机当前信号强度(dbm/asu值)
- 《VR入门系列教程》之21---使用Unity开发GearVR应用