码迷,mamicode.com
首页 > 其他好文 > 详细

openjdk 打包编译问题

时间:2015-04-03 01:42:29      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

首先,下载源码,是通过mercurial 下载 具体下载命令可以参看 http://openjdk.java.net/projects/jdk7u/ 这里

通过hg clone 下载

我下载的版本是openjdk-7u75-src-b13,这个版本可能不是一个稳定版本 但只要能通过编译,测试无误就可以使用,当然之其中也有一些代码修改,和业务相关的

之后是环境准备

freetype要高于2.2 版本

打包用的JDK 我用的版本是 jdk1.7.0_72

ant 用的版本是1.9.4 大于1.7.0即可

其他的工具 可以视打包环境打包过程会自动提示

打包机:

Linux 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux


过程中遇到的问题:

在写自己的makefile的时候 写错了jdk的版本 足足折腾了两天 真的很奇葩啊,

makefile里 JAVA_HOME   = $(shell echo /usr/local/jdk1.7.0_72) 这里的jdk漏掉了,直接反映的结果在 make sanity的时候报ant的版本低于1.7.1 这个真的很囧啊后来跟进去看才发现

在openjdk/jdk/make/common/shared/Sanity.gmk 文件中定义的获取命令是这样的 

_ANT_VER:=$(shell $(ANT) -version 2>&1 )

ANT_VER:=$(call GetVersion,"$(_ANT_VER)")

在查找$(ANT)值 和 GetVersion的具体实现后发现

$(ANT) = PTS=-Djava.io.tmpdir=/data0/zhangyun/_build/openjdk/build/linux-amd64/tmp JAVA_HOME=/usr/local/jdk1.7.0_72 /usr/local/apache-ant-1.9.4/bin/ant -version

GetVersion具体方法在openjdk/jdk/make/common/shared/Defs.gmk

# Given a line of text, get the version number from it

define GetVersion

$(shell echo $1 | sed -e ‘s@[^0-9]*\([0-9][0-9]*\.[0-9][.0-9]*\).*@\1@‘ )

endef


开始没有发现这里的少了东西,直接导致执行的结果如下

Error: JAVA_HOME is not defined correctly.

  We cannot execute /usr/local/1.7.0_72/bin/java


在看上面 GetVersion的执行过程 将这个输入带入GetVersion的输入 执行结果

# echo ‘Error: JAVA_HOME is not defined correctly.We cannot execute /usr/local/1.7.0_72/bin/java‘ | sed -e ‘s@[^0-9]*\([0-9][0-9]*\.[0-9][.0-9]*\).*@\1@‘ 

1.7.0

我一直以为我的ant出了问题后来才发现是这里导致的,这个真的是预先挖号的坑跳进去了 囧~~~在这里抽自己一巴掌~啪!

openjdk 打包编译问题

标签:

原文地址:http://my.oschina.net/u/268957/blog/395321

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!