参考:<a target=_blank href="http://blog.csdn.net/chelseablue1905/article/details/47209139">http://blog.csdn.net/chelseablue1905/article/details/47209139</a>
1.配置环境依赖
sudo apt-get install build-essential g++-multilib gcc-multilib ant libxrender-dev xorg-dev libasound2-dev libcups2-dev gawk zip libxtst-dev libxi-dev libxt-dev
2.
#!/usr/bin/env bash
#语言选项,这个必须设置,否则编译好后会出现一个HashTable的NPE错
export LANG=C
#Bootstrap JDK的安装路径。必须设置。
export ALT_BOOTDIR=/usr/lib/jdk/jdk8
#允许自动下载依赖
export ALLOW_DOWNLOADS=true
#并行编译的线程数,设置为和CPU内核数量一致即可
export HOTSPOT_BUILD_JOBS=4
export ALT_PARALLEL_COMPILE_JOBS=4
#比较本次build出来的映像与先前版本的差异。这个对我们来说没有意义,必须设置为false,否则sanity检查会报缺少先前版本JDK的映像。如果有设置dev或者DEV_ONLY=true的话这个不显式设置也行。
export SKIP_COMPARE_IMAGES=true
#使用预编译头文件,不加这个编译会更慢一些
export USE_PRECOMPILED_HEADER=true
#要编译的内容
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
#export BUILD_JAXWS=false
#export BUILD_CORBA=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true
#要编译的版本
#export SKIP_DEBUG_BUILD=false
#export SKIP_FASTDEBUG_BUILD=true
#export DEBUG_NAME=debug
#把它设置为false可以避开javaws和浏览器Java插件之类的部分的build。
BUILD_DEPLOY=false
#把它设置为false就不会build出安装包。因为安装包里有些奇怪的依赖,但即便不build出它也已经能得到完整的JDK映像,所以还是别build它好了。
BUILD_INSTALL=false
#编译结果所存放的路径
export ALT_OUTPUTDIR=/home/dream/jvm/build
#这两个环境变量必须去掉,不然会有很诡异的事情发生(我没有具体查过这些“”诡异的事情”,Makefile脚本检查到有这2个变量就会提示警告“)
unset JAVA_HOME
unset CLASSPATH
make 2>&1 | tee $ALT_OUTPUTDIR/build.log
编译时出现以下错误:
build-bootstrap-javac:
[javac] Compiling 95 source files to /home/xlf/jdk7u-dev/build/langtools/build/bootstrap/classes
[javac] /home/xlf/jdk7u-dev/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java:2182: warning: [overrides] Class Resolve.InapplicableSymbolsError.Candidate overrides equals, but neither it nor any superclass overrides hashCode method
[javac] private class Candidate {
[javac] ^
[javac] error: warnings found and -Werror specified
[javac] 1 error
[javac] 1 warning
BUILD FAILED
/home/xlf/jdk7u-dev/langtools/make/build.xml:452: The following error occurred while executing this line:
/home/xlf/jdk7u-dev/langtools/make/build.xml:795: Compile failed; see the compiler error output for details.
Total time: 3 seconds
make[2]: *** [build] Error 1
make[2]: Leaving directory `/home/xlf/jdk7u-dev/langtools/make'
make[1]: *** [langtools-build] Error 2
make[1]: Leaving directory `/home/xlf/jdk7u-dev'
make: *** [build_product_image] Error 2
原因是bootstrap jdk错误,自己从新下了个jdk7,ok
#!/usr/bin/env bash
#语言选项,这个必须设置,否则编译好后会出现一个HashTable的NPE错
export LANG=C
#Bootstrap JDK的安装路径。必须设置。
export ALT_BOOTDIR=/usr/lib/jvm/jdk1.7
#允许自动下载依赖
export ALLOW_DOWNLOADS=true
#并行编译的线程数,设置为和CPU内核数量一致即可
export HOTSPOT_BUILD_JOBS=4
export ALT_PARALLEL_COMPILE_JOBS=4
#比较本次build出来的映像与先前版本的差异。这个对我们来说没有意义,必须设置为false,否则sanity检查会报缺少先前版本JDK的映像。如果有设置dev或者DEV_ONLY=true的话这个不显式设置也行。
export SKIP_COMPARE_IMAGES=true
#使用预编译头文件,不加这个编译会更慢一些
export USE_PRECOMPILED_HEADER=true
#要编译的内容
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
#export BUILD_JAXWS=false
#export BUILD_CORBA=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true
#要编译的版本
#export SKIP_DEBUG_BUILD=false
#export SKIP_FASTDEBUG_BUILD=true
#export DEBUG_NAME=debug
#把它设置为false可以避开javaws和浏览器Java插件之类的部分的build。
BUILD_DEPLOY=false
#把它设置为false就不会build出安装包。因为安装包里有些奇怪的依赖,但即便不build出它也已经能得到完整的JDK映像,所以还是别build它好了。
BUILD_INSTALL=false
#编译结果所存放的路径
export ALT_OUTPUTDIR=~/openjdk7/build
#这两个环境变量必须去掉,不然会有很诡异的事情发生(我没有具体查过这些“”诡异的事情”,Makefile脚本检查到有这2个变量就会提示警告“)
unset JAVA_HOME
unset CLASSPATH
make 2>&1 | tee $ALT_OUTPUTDIR/build.log
编译过程出现错误 http://blog.csdn.net/zitong_ccnu/article/details/50149757
home/hadoopuser1/openjdk7/build/btjars/generatecurrencydata.jar -o /home/hadoopuser1/openjdk7/build/lib/currency.data.temp \
< ../../../src/share/classes/java/util/CurrencyData.properties
Error: time is more than 10 years from present: 1136059200000
java.lang.RuntimeException: time is more than 10 years from present: 1136059200000
at build.tools.generatecurrencydata.GenerateCurrencyData.makeSpecialCaseEntry(GenerateCurrencyData.java:285)
at build.tools.generatecurrencydata.GenerateCurrencyData.buildMainAndSpecialCaseTables(GenerateCurrencyData.java:225)
at build.tools.generatecurrencydata.GenerateCurrencyData.main(GenerateCurrencyData.java:154)
make[4]: *** [/home/hadoopuser1/openjdk7/build/lib/currency.data] Error 1
make[4]: Leaving directory `/home/hadoopuser1/openjdk7/openjdk-7u40-fcs-src-b43-26_aug_2013/jdk/make/java/java'
make[3]: *** [all] Error 1
make[3]: Leaving directory `/home/hadoopuser1/openjdk7/openjdk-7u40-fcs-src-b43-26_aug_2013/jdk/make/java'
make[2]: *** [all] Error 1
make[2]: Leaving directory `/home/hadoopuser1/openjdk7/openjdk-7u40-fcs-src-b43-26_aug_2013/jdk/make'
解决方法: CurrencyData.properties 中的时间改成10年内
ok
#-- Build times ----------
Target all_product_build
Start 2016-08-15 22:38:53
End 2016-08-15 23:33:37
00:04:32 corba
00:22:31 hotspot
00:00:48 jaxp
00:01:01 jaxws
00:24:11 jdk
00:01:41 langtools
00:54:44 TOTAL
hadoopuser1@master:/exapp/openjdk7/build/j2sdk-image/jre/bin$ l
java* orbd* policytool* rmiregistry* tnameserv*
keytool* pack200* rmid* servertool* unpack200*
hadoopuser1@master:/exapp/openjdk7/build/j2sdk-image/jre/bin$ ./java -version
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-hadoopuser1_2016_08_15_22_38-b00)
OpenJDK 64-Bit Server VM (build 24.0-b56, mixed mode)
hadoopuser1@master:/exapp/openjdk7/build/j2sdk-image/jre/bin$