编译JDK
记录学习一刻。下载在文中的链接中,可以直接打开链接:https://pan.baidu.com/s/1C7i8jD0SPLPXe4dUiUPevA
可以参照README-builds.html的内容,可以看一下里面关于系统环境的配置。
系统:Centos7 最小安装,更新yum源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS7-Base-163.repo CentOS-Base.repo
yum makecache
安装基础软件包以及必备软件包
yum -y groupinstall 'base'
yum -y install make
#安装linux声音框架
yum -y install alsa-lib-devel
#安装打印框架
yum -y install cups-devel
#安装X相关的库
yum -y install libXi-devel
yum -y install libX*
#安装g++
yum -y install gcc gcc-c++
#解决没有找到lstdc++的错误
yum install libstdc++-static
进入tools目录(由自己创建的任意目录,本次编译是在/application/tools),将百度云中的freetype(字体有关),ant 包拷贝到tools目录并解压。
在tools的上级目录创建一个java文件夹用来保存初始jdk(由于编译的时候需要编译java文件需要一个初始的JRE环境),将百度云网盘中的jdk-6u45-linux-x64.bin拷贝到java目录中,使用命令 ./jdk-6u45-linux-x64.bin
将bin包解压缩。
编译安装freetype:
进入freetype目录,执行以下命令进行编译:
./configure --prefix=/usr/local/include/freetype
make
make install
将ant链接到/usr/bin目录:
ln -s /application/tools/apache-ant-1.7.1/bin/ant /usr/bin/ant
设置环境变量,这一步只是简单的将初始JDK加入环境变量中。
JAVA_HOME=/application/java/jdk1.6.0_45
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
检查上述步骤是否正确
配置编译JDK的变量
#前面设置了这两个变量,现在去掉,不然会出现警告
unset CLASSPATH
unset JAVA_HOME
#设定语言选项
export LANG=C
#设置初始JDK
export ALT_BOOTDIR=/application/java/jdk1.6.0_45
export ANT_HOME=/application/tools/apache-ant-1.7.1/
export ALT_FREETYPE_LIB_PATH=/usr/local/include/freetype/lib
#允许自动下载依赖
export ALLOW_DOWNLOADS=true
#使用预编译头文件,不然编译会慢
export USE_PRECOMPILED_HEADER=true
#这是要编译的版本
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
#解决一个找不到头文件的错误
export ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype/loclude
检
查配置是否能够通过,出现Sanity check passed即为通过
make sanity
编译`make all`,时间比较长,过程中也可能会出现一些错误。
此次编译遇到的错误一般是在配置文件的时候会出现,不过上文的配置基本已经解决了,最后有一个会遇到的错误就是超过10年的问题,解决办法是修改文件/application/tools/openjdk/jdk/src/share/classes/java/util/CurrencyData.properties
,将文件中的所有关于时间的数据全部修改为近10年的数据,如果是2005 ,那就修改为2015便可以了,如下: