环境准备
操作系统,ubuntu-14.04.6-desktop-amd64.iso,下载地址:http://59.80.44.100/releases.ubuntu.com/14.04/ubuntu-14.04.6-desktop-amd64.iso。open jdk源码,openjdk-7u75-src-b13-18_dec_2014.zip,下载地址:https://download.java.net/openjdk/jdk7u75/ri/openjdk-7u75-src-b13-18_dec_2014.zipbootstrap jdk,使用oracle jdk:jdk-6u45-linux-x64.bin,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html编译步骤
1. 安装jdk编译依赖,执行命令:
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 ant
2. 解压open jdk。
unzip openjdk-7u75-src-b13-18_dec_2014.zip
3. 安装bootstrap jdk。
./jdk-6u45-linux-x64.bin
4. 在open jdk目录下新建shell脚本:build.sh,<openjdk源码目录>/build.sh,脚本内容如下:
#!/bin/bash export lang=c export alt_bootdir=/home/javon/jdk/jdk1.6.0_45#允许自动下载依赖包 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#避免javaws和浏览器java插件等的build build_deploy=false#不build安装包build_install=false#设置存放编译结果的目录 export alt_outputdir=/home/javon/jdk/openjdk-7-src/buildunset classpath unset java_home make sanity make 2>&1 | tee $alt_outputdir/build.log
说明:alt_bootdir为bootstrap jdk安装目录。
5. 修改open jdk源码中的一个文件,<openjdk源码目录>/jdk/src/share/classes/java/util/currencydata.properties,要做的是把文件中以下的时间改为10年内的一个时间:
az=azm;2015-12-31-20-00-00;aznmz=mzm;2016-06-30-22-00-00;mznro=rol;2015-06-30-21-00-00;rontr=trl;2014-12-31-22-00-00;tryve=veb;2018-01-01-04-00-00;vef
6. 执行编译脚本
#cd <openjdk源码目录>cd /home/javon/jdk/openjdk/sh build.sh
7. 编译完成后,alt_outputdir路径下得到如下目录,
其中,j2sdk-image目录下存放的就是整个jdk的完整编译结果。我们进入整个目录下,键入“java -version”,会得到如下结果:
编译过程中遇到的问题
1. 操作系统版本不支持,this os is not supported。
解决方法:修改文件<openjdk源码目录>/hotspot/make/linux/makefile,supported_os_version = 2.4% 2.5% 2.6% 3%后添加4%,修改后内容为:
supported_os_version = 2.4% 2.5% 2.6% 3% 4%
以上就是linux环境下编译jdk的详细步骤的详细内容。
