java-编译openJdk

原创 2016年08月30日 15:12:46

软件环境

OS:CentOS 6.5

openJdk:openjdk-7-fcs-src-b147-27_jun_2011.zip

准备工作

下载opendk

解压

unzip openjdk-7-fcs-src-b147-27_jun_2011.zip

安装依赖
# yum -y install gcc gcc-c++ alsa-lib alsa-lib-devel libXrender libXrender-devel libXi-devel libXt-devel libXtst-devel cups cups-devel


下载安装freetype

下载freetype-2.4.0.tar.gz ,

解压 tar -zxvf freetype-2.4.0.tar.gz

解压后 cd  freetype-2.4

执行命令 ./configure && make && make install


安装ant

下载ant  我下的是apache-ant-1.9.7-bin.tar.gz版本

解压 tar -zxvf apache-ant-1.9.7-bin.tar.gz

解压后把ant命令加入bin

# ln -s /usr/local/apache-ant-1.9.7/bin/ant  /usr/bin/ant


安装BootstrapJDK

版本要参照README-builds.html (在openjdk目录下)

我下载的是jdk-6u45-linux-x64.bin版本

下载后 执行 ./jdk-6u45-linux-x64.bin


配置环境变量

编辑文件vi ~/.bash_profile加入以下变量


export LANG=C
export ALT_BOOTDIR=/usr/local/jdk1.6.0_45
export ALT_JDK_IMPORT_PATH=/usr/local/jdk1.6.0_45
export ANT_HOME=/usr/local/apache-ant-1.9.7
export ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype2
export ALT_FREETYPE_LIB_PATH=/usr/local/lib
export ALLOW_DOWNLOADS=true
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
unset JAVA_HOME
unset CLASSPATH

使变量生效
# source ~/.bash_profile


测试环境是否健全

进入解压后的openjdk-7-fcs-src-b147-27_jun_2011.zip

cd openjdk

执行 make sanity
如果输出以下内容则表示通过,可以进行编译

Sanity check passed.


编译openjdk

进入解压后的openjdk-7-fcs-src-b147-27_jun_2011.zip

cd openjdk

build:

命令格式:gmake [ARCH_DATA_MODEL=32 or 64] [ALT_OUTPUTDIR=output_directory] [other "ALT_" overrides]

我用的是 gmake ARCH_DATA_MODEL=64

编译失败后清理:make clean


编译成功后会看到

-- Build times ----------
Target debug_build
Start 2016-08-30 15:03:19
End   2016-08-30 15:45:05
00:04:41 corba
00:09:35 hotspot
00:01:39 jaxp
00:01:37 jaxws
00:22:58 jdk
00:01:16 langtools
00:41:46 TOTAL

编译中遇到的问题

Bootstrap jdk版本不对

参照README-builds.html下载正确版本的jdk

Using java runtime at: /opt/jdk1.7.0_04/jre

Error occurred during initialization of VM
Unable to load native library: /opt/jdk1.7.0_04/jre/lib/i386/libjava.so: symbol JVM_SetNativeThreadName, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference
make[4]: *** [product] Error 1
make[4]: Leaving directory `/media/sf_E_DRIVE/learn/java/openjdk/openjdk/build/linux-i586/hotspot/outputdir'
make[3]: *** [generic_build2] Error 2
make[3]: Leaving directory
`/media/sf_E_DRIVE/learn/java/openjdk/openjdk/hotspot/make'
make[2]: *** [product] Error 2
make[2]: Leaving directory `/media/sf_E_DRIVE/learn/java/openjdk/openjdk/hotspot/make'
make[1]: *** [hotspot-build] Error 2
make[1]: Leaving directory `/media/sf_E_DRIVE/learn/java/openjdk/openjdk'

make: *** [build_product_image] Error 2


time is more than 10 years from present

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)

# 解决办法
# 修改CurrencyData.properties(路径:jdk/src/share/classes/java/util/CurrencyData.properties)
修改108行
AZ=AZM;2009-12-31-20-00-00;AZN
修改381行
MZ=MZM;2009-06-30-22-00-00;MZN
修改443行
RO=ROL;2009-06-30-21-00-00;RON
修改535行
TR=TRL;2009-12-31-22-00-00;TRY
修改561行
VE=VEB;2009-01-01-04-00-00;VEF



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux环境编译安装OpenJDK

Centos6.5 AMD64位机器 Java的源码是C,C++和Java实现的,所以还需要有一个安装好的java建议选OracleJDK参考文末 安装OracleJDK Linux环境安装卸载JDK...
  • unix21
  • unix21
  • 2016年03月16日 23:05
  • 2174

CentOS7手动编译OpenJDK

1.首先下载一个OpenJDK的zip包,URL路径为: http://hg.openjdk.java.net/jdk7/jdk7/jdk/ 挺不显眼的;左侧有个zip,点一下就会下载下来 2....

Building OpenJdk7 in Ubuntu14.10 ( amd64 )

Finally Result: -- Build times ---------- Target debug_build Start 2015-09-29 15:43:41 End   2015-0...

CentOS编译OpenJDK

在编译JDK7之前,安装一个JDK6版本,因为有一些JAVA文件需要编译;配置更新源,yum -y groupinstall 'base',yum -y install make;安装软件包,yum ...

Linux Mint 17.3 Rosa下JDK编译

通过《深入理解Java虚拟机:JVM高级特性与最佳实践(第三版)》的学习,觉得有很多细节需要注意,特此记录以备不时的参考之需…...

tensorflow模型相关

最近学习tensorflow,对其中的模型的导入导出一直比较困惑,因此花了些力气研究了一下,最后归纳整理到本篇博客。 变量保存和恢复     在tensorflow中,变量用来存储和更新参数。变量创建...

放苹果

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 Input 第一行是测试数据的数目t(0 Out...

JVM源码---教你傻瓜式编译openjdk7(JAVA虚拟机爱好者必看)

LZ经过一个星期断断续续的研究,终于成功的搞定了JDK的成功编译与调试。尽管网络上的教程也有不少,包括源码中也有自带的编译步骤说明,但真正自己动手的话,还是会遇到不少意料之外的错误。 ...

Java虚拟机学习笔记-记录一次编译OpenJDK8与调试的过程

最近意识到,要想在技术的路上走的更远,只是摆弄一些框架是远远不够的,所以前几天趁着618活动,从京东买了一堆基础的书籍。其中,包括一本《深入理解Java虚拟机:JVM高级特性与最佳实践》,网上各路大牛...

深入理解java虚拟机之一window下编译OpenJDK环境搭建

环境构建需要的工具 1.cygwin 工具。这个工具的主要用处是为了在window平台上模拟出一个unix虚拟环境。 为了能够在window下编译openJDK,我们需要手...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java-编译openJdk
举报原因:
原因补充:

(最多只允许输入30个字)