ubuntu下编译openjdk7

这两天在看《深入理解java虚拟机》第二版,第一章就是介绍自己动手编译一个openjdk。
于是乎,本人也想动手试试,实践才能出真知。在编译的过程中也发现了好多的问题。
那么接下来就是过程了:
电脑系统是自己装的ubuntu14.04LTS系统
首先准备:

#依赖脚本
sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev libxt-dev ant libxtst-dev

#opendjdk7的依赖
sudo apt-get build-dep openjdk-7 

接下来,我直接去官网下载了几个包
1,openjdk7的源包
2,oracle的jdk6的源包
这几个包直接解压就好了,环境变量都没有配置。

然后就是写个脚本,
这个脚本网上到处都是,根据自己的实际情况路径改改就行了。此脚本得放在解压好的openjdk7目录下才能运行,否则运行不了,报错说没有sanity。也可以在以下脚本里写明openjdk7的位置(这样就不必放在openjdk7的目录下了)
比如以本人为例,就可以在脚本里加上:

cd workspace/openjdk7/openjdk

未切换位置的具体脚本:

#!/bin/bash
export LANG=C
export ALT_BOOTDIR=/home/threedong/workspace/jdk6/jdk1.6
export ALT_JDK_IMPORT_PATH=/home/threedong/workspace/jdk6/jdk1.6
export ALLOW_DOWNLOADS=true
export HOTSPOT_BUILD_JOBS=4
export ALT_PARALLEL_COMPILE_JOBS=4
export SKIP_COMPARE_IMAGES=false
export USE_PRECOMPILED_HEADER=true
export BUILD_LANGTOOLS=true
export BUILD_JAXP=false
export BUILD_CORBA=false
export BUILD_JAXWS=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true
BUILD_DEPLOY=false
BUILD_INSTALL=false
unset JAVA_HOME
unset CLASSPATH
export ALT_OUTPUTDIR=/home/threedong/workspace/openjdk7/openjdk/build
make sanity && make 2>&1 | tee $ALT_OUTPUTDIR/build.log

只要启动这个脚本就开始编译了。

这个脚本的意思就是检测各项配置是否正确,如果正确它就会开始编译openjdk,编译的文件就放在ALT_OUTPUTDIR目录下。全部编译完成之后,ALT_OUTPUTDIR目录下的j2sdk-image就是openjdk的目录了。

这里有几点需要注意:
1,系统必须是英文环境, LANG=C
2,下载的oracle jdk 最好是jdk6,因为本人使用之前自己安装的jdk8报错了。
3,编译时确认没有设置JAVA_HOME和CLASSPATH

整个编译的过程在20分钟左右。
但是在编译的过程中肯定会出错,处理这些错误花费的时间就会久点儿。
基本的错误基本都能百度到。
那么接下就是本人在编译过程中出现的错误。

jdk8
1,上图出现错误的原因是我之前装的是jdk8(前面有提过)

stdc++
2,上图缺少一个包,直接代码:

sudo apt-get install stdc++

时间
3,上图就是openjdk7里面的一个文件里面的时间有问题,按照图中提示找到路径为/src/share/classes/java/util/目录下的CurrencyData.properties文件,修改里面的时间(从现在算起<10年的就行了。比如今年2016,改成2008就行了。)

最后,编译完成之后,就是这个样子的。
结束
(回顾了下,上图有点问题,没有切换到openjdk目录下,java显示的版本貌似有点问题,稍后再看看,由于之前在官网下载了openjre,所以运行环境是就是如上图这个样子的。)
请看最终版,详见下图:

正确的编译compile
如上图,编译完成之后,还要配置下openjdk的优先级,如上图框A(包括java和javac)。之后还需要选择使用的是openjdk,由于本人编译好后的位置是在selection=3的位置上,所以就选择3,如图框B。最后输出一下java版本,如框C。
javac也需要同框B一样,设置一下。
此图就是最终的正确版本。
JDK环境配置请点这

结束,收工。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值