个人编译环境的为Ubuntu 12.04 32位系统,双核html
经过 Mercurial 代码管理工具下载太慢,这里选择直接下载官网源码包java
用于执行 Java 编译代码中的 Ant 脚本linux
编译 OpenJDK 须要一个可用的 JDKubuntu
打开终端,输入如下命令:浏览器
sudo apt-get install build-essential gawk m4 openjdk-6-jdk libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant
如何找不到软件包,能够先执行如下命令:jvm
sudo apt-get update
这个命令将会更新可用软件列表工具
将源码解压到 /home/jacend/Download/ 目录下面,你们能够本身选择一个合适的目录ui
unzip openjdk-7u40-fcs-src-b43-26_aug_2013,zip /home/jacend/Download/
解压后再 /home/jacend/Download/ 下面会出现一个 openjdk 的源码目录,该目录下包括了jdk,hotspot以及一些Java工具的源码.net
我会将编译的结果放在 /home/jacend/pgSoft/openjdk_7u4/build插件
mkdir /home/jacend/pgSoft/openjdk_7u4 cd /home/jacend/pgSoft/openjdk_7u4 mkdir build
咱们将在解压的源码包中建立一个 build_open_jdk.sh 的脚本而且赋予执行权限
cd /home/jacend/Download/openjdk/ touch build_open_jdk.sh sudo chmod +x build_open_jdk.sh sudo gedit build_open_jdk.sh
脚本中输入如下内容
#语言选项 export LANG=C ## Bootstarp JDK 的安装路径,也就是咱们安装的 openJDk 6 的根目录 export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk-i386 #容许自动下载依赖 export ALLOW_DOWNLOADS=true #并行编译的线程数,设置与CPU内核数量一致,个人笔记本为双核CPU,此项能够提升编译速度 export HOTSPOT_BUILD_JOBS=6 export ALT_PARALLEL_COMPILE_JOBS=6 export SKIP_COMPARE_IMAGES=true #使用预编译头文件,不加这个编译会慢不少 export USE_PRECOMPLIED_HEADER=true #要编译的内容 export BUILD_LANGTOOLS=true export BUILD_HOTSPOT=true export BUILD_JDK=true #把它设置为 false 能够避开 javaws 和浏览器插件之类的部分的 build BUILD_DEPLOY=false #把它设置为 false 就不会 build 出安装包,由于安装包中有些奇怪的依赖 #但即使不build出它已经能够获得完成的JDK映像了,因此仍是不 build 了 export BUILD_INSTALL=false #编译结果所存在的路径 export ALT_OUTPUTDIR=/home/jacend/pgSoft/openjdk_7u4/build #这两个编译变量必须去掉,否则编译会出问题 unset JAVA_HOME unset CLASSPATH #检查设置是否正确 make sanity make 2>&1 |tee $ALT_OUTPUTDIR/build.log
cd /home/jacend/Download/openjdk/ sh ./build_open_jdk.sh
列举一下编译过程的错误,供你们参考,你们能够预先处理了再执行编译脚本
error: "__LEAF" redefined [-Werror]
碰到这个错误能够 参考 在这个环境下应该不会报这个错误
JVM_FindClassFromCaller
修改文件:/home/jacend/Download/openjdk/hotspot/make/linux/Makefile 注释掉包含test_gamma字样的全部行便可
Error: time is more than 10 years from present: 1104530400000
进入解压后openJDk目录,找到CurencyData.properties,将全部涉及到时间修改成10年以内的时间,例如将2004-01-13-20-00-00 修改为 2016-01-13-20-00-00
cd /home/jacend/Downloads/openjdk/jdk/src/share/classes/java/util sudo gedit CurrencyData.properties