centos编译openjdk

编译环境:
阿里云centos 7.2 64位 4G内存
jdk 1.7
ant 1.9
freetype 2
openjdk 1.7
========================================
yum -y groupinstall 'base'
yum -y install alsa-lib-devel
yum -y install cups-devel
yum -y install libXi-devel
yum -y install gcc gcc-c++
yum -y install libX*
yum -y install libstdc++-static
cd /root
mkdir /app
cp /root/*.* /app
cd /app

unzip apache-ant-1.9.10-bin.zip
tar -zxvf freetype-2.4.9.tar.gz
tar -zxvf jdk-7u79-linux-x64.tar.gz
unzip openjdk-7u40-fcs-src-b43-26_aug_2013.zip

cd /app/freetype-2.4.9

./configure
make 
make install

更改所有没有注释掉的时间为十年内,共有5处需要修改
vi /app/openjdk/jdk/src/share/classes/java/util/CurrencyData.properties
去掉CurrencyData.properties文件291行的测试命令,是该文件第一个 &&./ test_gamma
vi /home/openjdk/hotspot/make/linux/Makefile
或者
\cp -f /root/CurrencyData.properties /app/openjdk/jdk/src/share/classes/java/util/CurrencyData.properties

cd /app/openjdk
unset CLASSPATH
unset JAVA_HOME
export ALT_BOOTDIR=/app/jdk1.7.0_79
export ANT_HOME=/app/apache-ant-1.9.10
export ALT_FREETYPE_LIB_PATH=/usr/local/lib
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=false
export DEBUG_NAME=debug
export ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype2
export LANG=C
      
make sanity
make

编译成功!
================================
注意事项:
1. ant版本 jdk版本 openjdk版本
2. 修改CurrencyData.properties的时间为十年以内
3. 去掉openjdk/hotspot/make/linux/Makefile文件中的错误测试
4. freetype的版本要与给定的环境变量中的路径一致

整个编译大约需要1小时20分钟.
=================================
常见的报错:
------------------------------------------
/bin/cp ../../../src/share/lib/calendars.properties /app/openjdk/build/linux-amd64/../linux-amd64-debug/lib/calendars.properties
rm -f /app/openjdk/build/linux-amd64/../linux-amd64-debug/lib/currency.data
/app/jdk1.7.0_79/bin/java -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -Xmx512m -Xms512m -XX:PermSize=32m -XX:MaxPermSize=160m -jar /app/openjdk/build/linux-amd64/../linux-amd64-debug/btjars/generatecurrencydata.jar -o /app/openjdk/build/linux-amd64/../linux-amd64-debug/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[5]: *** [/app/openjdk/build/linux-amd64/../linux-amd64-debug/lib/currency.data] Error 1
make[5]: Leaving directory `/app/openjdk/jdk/make/java/java'
make[4]: *** [all] Error 1
make[4]: Leaving directory `/app/openjdk/jdk/make/java'
make[3]: *** [all] Error 1
make[3]: Leaving directory `/app/openjdk/jdk/make'
make[2]: *** [jdk-build] Error 2
make[2]: Leaving directory `/app/openjdk'
make[1]: *** [generic_debug_build] Error 2
make[1]: Leaving directory `/app/openjdk'
make: *** [build_debug_image] Error 2

需要修改CurrencyData.properties的时间为十年以内
------------------------------------------
JAVA_HOME=/app/jdk1.7.0_79 ANT_OPTS=-Djava.io.tmpdir='/app/openjdk/build/linux-amd64-debug/langtools/build/ant-tmp' /app/apache-ant-1.10.2/bin/ant -diagnostics > /app/openjdk/build/linux-amd64/../linux-amd64-debug/langtools/build/ant-diagnostics.log ; \
  JAVA_HOME=/app/jdk1.7.0_79 ANT_OPTS=-Djava.io.tmpdir='/app/openjdk/build/linux-amd64-debug/langtools/build/ant-tmp' /app/apache-ant-1.10.2/bin/ant -version >> /app/openjdk/build/linux-amd64/../linux-amd64-debug/langtools/build/ant-diagnostics.log
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/tools/ant/launch/Launcher : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/tools/ant/launch/Launcher : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
make[3]: *** [/app/openjdk/build/linux-amd64/../linux-amd64-debug/langtools/build/ant-diagnostics.log] Error 1
make[3]: Leaving directory `/app/openjdk/langtools/make'
make[2]: *** [langtools-build] Error 2
make[2]: Leaving directory `/app/openjdk'
make[1]: *** [generic_debug_build] Error 2
make[1]: Leaving directory `/app/openjdk'
make: *** [build_debug_image] Error 2

ant版本与jdk版本不对应
------------------------------------------
[ -f libsaproc_g.so ] || { ln -s libsaproc.so libsaproc_g.so; }
/usr/bin/objcopy --only-keep-debug libsaproc.so libsaproc.debuginfo
/usr/bin/objcopy --add-gnu-debuglink=libsaproc.debuginfo libsaproc.so
strip -g libsaproc.so
[ -f libsaproc_g.debuginfo ] || { ln -s libsaproc.debuginfo libsaproc_g.debuginfo; }
zip -q -y libsaproc.diz libsaproc.debuginfo libsaproc_g.debuginfo
rm -f libsaproc.debuginfo libsaproc_g.debuginfo
[ -f libsaproc_g.diz ] || { ln -s libsaproc.diz libsaproc_g.diz; }
echo "**NOTICE** Dtrace support disabled: "/usr/include/sys/sdt.h not found""
**NOTICE** Dtrace support disabled: /usr/include/sys/sdt.h not found
make[7]: Leaving directory `/app/openjdk/build/linux-amd64-debug/hotspot/outputdir/linux_amd64_compiler2/jvmg'
All done.
make[6]: Leaving directory `/app/openjdk/build/linux-amd64-debug/hotspot/outputdir/linux_amd64_compiler2/jvmg'
cd linux_amd64_compiler2/jvmg && ./test_gamma
Using java runtime at: /app/jdk1.7.0_79/jre
./gamma: relocation error: /app/jdk1.7.0_79/jre/lib/amd64/libjava.so: symbol JVM_FindClassFromCaller, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference
make[5]: *** [jvmg] Error 127
make[5]: Leaving directory `/app/openjdk/build/linux-amd64-debug/hotspot/outputdir'
make[4]: *** [generic_build2] Error 2
make[4]: Leaving directory `/app/openjdk/hotspot/make'
make[3]: *** [jvmg] Error 2
make[3]: Leaving directory `/app/openjdk/hotspot/make'
make[2]: *** [hotspot-build] Error 2
make[2]: Leaving directory `/app/openjdk'
make[1]: *** [generic_debug_build] Error 2
make[1]: Leaving directory `/app/openjdk'
make: *** [build_debug_image] Error 2

去掉CurrencyData.properties文件291行的测试命令,是该文件第一个 &&./ test_gamma

------------------------------------------

正常编译通过时的输出:

......

classes/com/sun/security/cert classes/sun/net/www/protocol/https classes/sun/security/pkcs12 classes/sun/security/ssl classes/sun/security/krb5/*.class classes/sun/security/krb5/internal/*.class classes/sun/security/krb5/internal/ccache classes/sun/security/krb5/internal/crypto classes/sun/security/krb5/internal/ktab classes/sun/security/krb5/internal/rcache classes/sun/security/krb5/internal/util classes/sun/security/jgss/spi/GSSContextSpi.class
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# >>>Making sec-files-win @ Tue Mar 20 23:29:36 CST 2018 ...
-bash: syntax error near unexpected token `>'
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# >>>Making jgss-files @ Tue Mar 20 23:29:36 CST 2018 ...
-bash: syntax error near unexpected token `>'
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# >>>Making server-jdk-image @ Tue Mar 20 23:29:36 CST 2018 ...
-bash: syntax error near unexpected token `>'
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# rm -f -r /app/openjdk/build/linux-amd64/j2sdk-server-image
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# /bin/cp -r /app/openjdk/build/linux-amd64/j2sdk-image /app/openjdk/build/linux-amd64/j2sdk-server-image
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# rm -f -r /app/openjdk/build/linux-amd64/j2sdk-server-image/demo
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# rm -f -r /app/openjdk/build/linux-amd64/j2sdk-server-image/sample
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# rm -f /app/openjdk/build/linux-amd64/j2sdk-server-image/bin/jcontrol
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# rm -f /app/openjdk/build/linux-amd64/j2sdk-server-image/jre/bin/jcontrol
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# rm -f /app/openjdk/build/linux-amd64/j2sdk-server-image/man/ja_JP.UTF-8/man1/javaws.1
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# rm -f /app/openjdk/build/linux-amd64/j2sdk-server-image/man/man1/javaws.1
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# >>>Finished making images @ Tue Mar 20 23:29:36 CST 2018 ...
-bash: syntax error near unexpected token `>'
[root@iZm5eeufalzdvzfrjv8konZ linux-amd64]# make[2]: Leaving directory `/app/openjdk/jdk/make'
> ########################################################################
> ##### Leaving jdk for target(s) sanity all docs images             #####
> ########################################################################
> ##### Build time 00:13:43 jdk for target(s) sanity all docs images #####
> ########################################################################
>
> #-- Build times ----------
> Target debug_build
> Start 2018-03-20 23:05:03
> End   2018-03-20 23:29:36
> 00:02:39 corba
> 00:06:15 hotspot
> 00:00:26 jaxp
> 00:00:33 jaxws
> 00:13:43 jdk
> 00:00:57 langtools
> 00:24:33 TOTAL
> -------------------------
> make[1]: Leaving directory `/app/openjdk'
> [root@iZm5eeufalzdvzfrjv8konZ openjdk]#

 

转载于:https://my.oschina.net/u/2528964/blog/1649935

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值