openjdk 打包编译问题

首先,下载源码,是通过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出了问题后来才发现是这里导致的,这个真的是预先挖号的坑跳进去了 囧~~~在这里抽自己一巴掌~啪!

转载于:https://my.oschina.net/u/268957/blog/395321

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值