modify history:
2012-02-25:
1. add the ubuntu info,when install the os,you should choose the English.
2. add some args to the build script:BUILD_HOTSPOT_JOBS=2 BUILD_CORBA=false
背景:因为之前学习openjdk的虚拟机系统,安装了emacs,导致环境编译出现问题。例如:这个问题,但不仅仅只有这一个。
虽然有安装之前有整个虚拟机完整的备份,但是正好趁此机会,再重新整理一遍编译过程。
宿主操作系统:win7 professional 32位
vmware版本: vmware7
虚拟系统版本: Ubuntu10.10 32位 (English version)
2. 环境搭建
2.1 安装wmware,过程略。
2.2 创建ubuntu的虚拟系统(不是安装ubuntu过程),只需要设置cpu,memory,harddriver size,安装路径,其他默认即可。
注:配置虚拟机hardware的时候,删除不使用的hardware,特别是sound。参见这个帖子。
创建完(这里还未开始安装系统)之后虚拟机的hardware信息:
2.3 安装ubuntu,过程略。
注:1. 选择English;
2. 请保证网络良好,要么直接断网,否则在安装过程中选择时区在网络差的情况会造成卡机(卡很久很久,重装2、3次才发觉是网络的问题,可怜的移动3g网络)
3. 安装完成之后,进行系统清理。(删除不适用的软件:game之类的。看个人喜好)
4. 更新源:$sudo apt-get update #没有通过UpdateManager更新ubuntu操作系统
3. 软件安装
3.1 ubuntu中安装openssh-server,方便与宿主机器交互文件。
$sudo apt-get install openssh-server #安装完成之后sshd服务自动启动。
3.2 宿主计算机安装ssh软件,过程略。
3.3 安装apt-file,便于根据*.h搜索对应的库文件,后面会用到。
$sudo apt-get install apt-file
$apt-file update #安装完之后更新源
3.4 安装ant,下载地址,本地保存路径:/home/haowei/Downloads(注:后面的路径均为本人计算机路径)
$cd /home/haowei/Downloads
$unzip apache-ant-1.8.2-bin.zip -d .. #解压到上级目录,解压后路径:/home/haowei/apache-ant-1.8.2
3.5 安装freetype2,下载地址,本地保存路径:/home/haowei/Downloads
$cd /home/haowei/Downloads
$tar zxvf freetype-2.4.4.tar.gz -C .. #解压到上级目录,解压后路径:/home/haowei/freetype-2.4.4
$cd /home/haowei/freetype-2.4.4
$./configure
$make
$sudo make install #因为user的关系,需要sudo来执行安装,安装过程报错但是ignored,所以不影响。
rm -f /usr/local/include/freetype2/freetype/cache/*
rmdir /usr/local/include/freetype2/freetype/cache
rm -f /usr/local/include/freetype2/freetype/internal/*
rmdir /usr/local/include/freetype2/freetype/internal
rmdir: failed to remove `/usr/local/include/freetype2/freetype/internal': No such file or directory
make: [install] Error 1 (ignored)
/usr/bin/install -c -m 644 ./builds/unix/ft2unix.h \
/usr/local/include/ft2build.h
3.6 安装BOOTJDK,从oracle官网下载jdk1.6.0_26,解压后的路径:/home/haowei/sunjdk/jdk1.6.0_26
3.7 下载解压openjdk7的源码,解压后的路径:/home/haowei/openjdk
3.8 安装编译需要的软件或者库:
软件或者库列表:
gawk;g++;libasound2-dev;libcups2-dev;libx11-dev;libxt-dev;
libxrender-dev;libxext-dev;libxtst-dev
$sudo apt-get install xxx #执行安装xxx
3.9 如果编译过程中还是缺少依赖库的话,参考下面这个过程,帮你找到对应的库。
编译提示,缺少X11/extensions/Xrender.h No Such file or directory。通过命令【$apt-file search Xrender.h】查找哪些库有Xrender.h
$sudo apt-get install libxrender-dev #最终确定,Xrender.h是在libxrender-dev库中。
4. 编译openjdk
4.1 编译脚本
haowei@haoweiVM:~/openjdk$ less 1-build-debug_hotspot.sh
LogFile=build_debug_version.`date +%Y-%m-%d_%H:%M:%S`.log
export ALT_BOOTDIR="/home/haowei/sunjdk/jdk1.6.0_26"
export ALT_JDK_IMPORT_PATH="/home/haowei/sunjdk/jdk1.6.0_26"
export ANT_HOME="/home/haowei/apache-ant-1.8.2"
export PATH="/usr/local/sbin:/usr/lib/:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/haowei/apache-ant-1.8.2/bin"
export ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype
export ALT_FREETYPE_LIB_PATH=/usr/lib/
make debug_build BUILD_HOTSPOT_JOBS=2 BUILD_JAXWS=false BUILD_JAXP=false BUILD_CORBA=false>$LogFile
设定LogFile是为了保存每次编译过程的日志。根据编译日志还可以看到一些有用的信息。
make参数还可以选择:product_build....
4.2 编译过程的问题
4.2.1 freetype检查出现问题
编译过程出现下面的错误:
解决办法:安装完freetype后,需要对路径进行修改(其实就是要将freetype目录里的全部文件移到上层目录,再修改上层目录的文件名为freetype):
old:/usr/local/include/freetype2/freetype/*
new:/usr/local/include/freetype/*
4.2.2 libfreetype.so找不到
下面这个问题是libfreetype.so文件找不到。但在/usr/lib中有libfreetype.so.6的文件
在目录【/usr/lib】中建立libfreetype.so的
软连接:【$sudo ln -sv /usr/lib/libfreetype.so.6 libfreetype.so】
4.2.3 编译完成
-- Build times ---------- Target debug_build Start 2012-02-07 10:47:19 End 2012-02-07 10:56:50 00:00:11 corba 00:00:26 hotspot 00:08:48 jdk 00:00:06 langtools 00:09:31 TOTAL ------------------------- 注:这里的执行时间不是真正完整的编译时间。