前期根据网上教程以及书籍资料,编译openJDK一直碰壁,编译错误层出不穷,迫于无奈,只能直面自己的懒惰,自己亲自阅读官网资料。
官方编译JDK的教程
官方编译JDK8的教程
- 编译环境
操作系统:CentOS6.5 x86_64 (带桌面版) - 编译目标
openJDK 8u
一、获取源码
推荐获取源码网站,可以直接选择自己预编译的jdk版本下载。例如,下载JDK8u源码时,应该进入的最终界面,如下图

点击browse可以浏览文件大纲,点击bz2、zip或gz可以选择下载的源码打包格式。
此处推荐的下载源码方式,是在控制台用hg指令获取源码,本人获取openJDK8u的命令如下
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/
cd jdk8u
sh ./get_source.sh
- 注意
sh ./get_source.sh指令用于更新所下载的源代码。如果出现类似WARNING: jaxp exited abnormally (255)的abnormally异常,则务必再次执行sh ./get_source.sh,并且保证最终源代码目录下新增langtools文件夹
二、安装boot jdk
按照Boot JDK Requirements,boot jdk推荐安装计划编译的jdk的版本n-1,并且可以通过 sudo yum install java-<VERSION>-openjdk-devel.语句安装openJDK,作于boot jdk。所以本人想安装jdk 1.7.0,但发现系统已经安装过一个jdk1.7了,具体版本如下
java version “1.7.0_45”
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
三、安装系统基本工具包
按照Operating System Requirements,安装Development Tools包
四、配置本地编译工具
按照Native Compiler (Toolchain) Requirements ,安装
- gcc
- clang
五、配置外部函数库
按照External Library Requirements ,安装
- FreeType
- CUPS
- X11
- ALSA
- libffi
六、配置构建工具
- Autoconf
- GUN Make
- GNU Bash
七、检测编译环境
-
按照Running Configure,配置参数,本人通过书本推荐的shell脚本配置,脚本内容如下
export LANG=C
export ALT_BOOTDIR=/usr/java/jdk1.7.0_40
export ALLOW_DOWNLOADS=true
export HOTSPOT_BUILD_JOBS=4
#export ALT_PARALLEL_COMPILE_JOBS=4
export SKIP_COMPARE_IMAGES=true
export USE_PRECOMPILED_HEADER=true
export BUILD_LANGTOOLS=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true
BUILD_DEPLOY=false
BUILD_INSTALL=false
unset JAVA_HOME
unset CLASSPATH其中ALT_BOOTDIR的值为boot jdk的安装路径,本人将该脚本命名为 setting.sh,并放在源代码文件夹下。
-
我们需要创建存放编译所产生的文件,即JDK的文件夹,如果直接在源码所在路径存放,则会污染源代码文件。
-
进入创建好的文件夹,运行源代码文件中的configure文件
以上的步骤,对应的命令如下(此时所在路径为源码所在文件夹)
source setting.sh
mkdir -p build/imme
cd build/imme
sh …/…/configure


八、编译
根据Running Make,要进行关键的步骤了,我执行的命令是(此时所在路径为存放编译所产生的jdk文件夹,即刚刚创建的文件夹)
make all
开始等待,要祈祷的是,能等久一点,因为如果有错误,这时候就会停止编译了。


九、简单测试

同样步骤,成功编译open JDK8u60
922




被折叠的 条评论
为什么被折叠?



