如果是windows系统,可以自行安装虚拟机。之所以选择CentOS 5.5的原因是该版本的内核可以编译OpenJDK6。本例编译采用的操作系统、jdk、Eclipse等均为32位。下载文件并拷贝至虚拟机,以下是我的存放目录,仅供大家参考。
# 存放软件
/home/liyanchao/soft
# 存放openjdk以及编译后的代码
/home/liyanchao/openjdk
CentOS5.5下yum源基本都已经不能用了,这里需要修改系统默认的yum源位置。
# 切换到root用户
su root
# 新建并编辑CentOS-Base.repo文件
vi /etc/yum.repos.d/CentOS-Base.repo
# 清除已有yum源
yum clean all
将下面的内容粘贴到CentOS-Base.repo中
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/5.5/os/i386/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/5.5/updates/i386/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
baseurl=http://vault.centos.org/5.5/addons/i386/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/5.5/extras/i386/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://vault.centos.org/5.5/centosplus/i386/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
baseurl=http://vault.centos.org/5.5/contrib/i386/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
如果执行了yum clean all之后还是无法使用yum源的话,可以重启一下系统。
# gcc
yum install gcc gcc-c++
# alsa
yum install alsa-lib alsa-lib-devel
# cups
yum install cups-devel
# libXi
yum install libXi libXi-devel
# motif
yum install openmotif
yum install openmotif-devel
# ant-nodeps
yum install ant-nodeps
# libXtst
yum install libXtst
yum install libXtst-devel
tar -xvf freetype-2.3.12.tar.gz
cd freetype-2.3.12
./configure && make && make install
tar -xvf apache-ant-1.8.2-bin.tar.gz
sh jdk-6u45-linux-i586.bin
),然后配置编译环境变量。# 编辑profile文件并加入下面的配置
vi /etc/profile
# 刷新环境变量
source profile
export LANG=C
# 解决编译过程中无法文件无法下载问题
export ALT_DROPS_DIR=/home/liyanchao/openjdk/drop
export ARCH_DATA_MODEL=32
export ALLOW_DOWNLOADS=true
# Bootstrap JDK目录(要替换成自己本机的目录)
export ALT_BOOTDIR=/home/liyanchao/soft/jdk1.6.0_45
# ant目录(要替换成自己本机的目录)
export ANT_HOME=/home/liyanchao/soft/apache-ant-1.8.2
# freetype2头文件安装目录,一般无需替换
export ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype2
#freetype2 lib目录,一般无需替换
export ALT_FREETYPE_LIB_PATH=/usr/local/lib
# openJDK编译后的存放目录
export ALT_OUTPUTDIR=/home/liyanchao/openjdk/build
# 清除本机已有的java环境变量配置
unset JAVA_HOME
unset CLASSPATH
接下来的编译过程会遇到各种各样的问题,这里先提前解决了,毕竟大家都希望编译一次通过。
修改108行为
AZ=AZM;2015-12-31-20-00-00;AZN
修改377行为
MZ=MZM;2016-06-30-22-00-00;MZN
修改439行为
RO=ROL;2015-06-30-21-00-00;RON
修改525行为
TR=TRL;2014-12-31-22-00-00;TRY
修改551行为
VE=VEB;2018-01-01-04-00-00;VEF
# 打开config文件
vi /etc/selinux/config
# 修改第6行为
ELINUX=disabled
网盘里提供了jdk6-jaf-b20.zip、jdk6-jaxp-b20.zip、jdk6-jaxws-b20.zip三个文件即为了解决该问题。将这三个文件复制到/home/liyanchao/openjdk/drop
目录下。
在开始编译之前,需要重启一下系统。然后切换到openjdk目录下,执行:
# 编译前检查
make sanity
如果检查通过(输出Sanity check passed)的话,再执行:
make all
需要等待一段时间,大概20到30分钟。编译成功后大家可以:
cd /home/liyanchao/openjdk/build/j2sdk-image/bin
./java -version
如果看到
openjdk version "1.6.0-internal"
OpenJDK Runtime Environment (build 1.6.0-internal-root_14_nov_2018_03_56-b00)
OpenJDK Client VM (build 20.0-b12, mixed mode)
那么编译就成功了。j2sdk-image可以作为一个完整的jdk使用了,接下来要编译hotspot的源码,并在Eclipse中调试hotspot源码。
下一篇CentOS 5.5 编译HotSpot并在Eclipse中调试