博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openjdk 打包编译问题
阅读量:6513 次
发布时间:2019-06-24

本文共 1483 字,大约阅读时间需要 4 分钟。

hot3.png

首先,下载源码,是通过mercurial 下载 具体下载命令可以参看  这里

通过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

你可能感兴趣的文章
cacti相关资料网站
查看>>
我的友情链接
查看>>
浅析:Android--Fragment的懒加载
查看>>
Linux操作系统目录和Linux常用的文件和目录管理命令
查看>>
DIY:自己动手做一个迷你 Linux 系统(二)
查看>>
猫猫学IOS(三十)UI之Quartz2D画图片画文字
查看>>
windows 指定的网络名不可用__被我解决了!
查看>>
09值类型、引用类型、字符串
查看>>
ethereumjs/merkle-patricia-tree-2-API
查看>>
go标准库的学习-runtime
查看>>
pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-使用说明
查看>>
NodeJS学习之文件操作
查看>>
AJAX的get和post请求原生编写方法
查看>>
WebSocket 是什么原理?为什么可以实现持久连接
查看>>
Python自学笔记-logging模块详解
查看>>
IE6下实现min-height
查看>>
Head First--设计模式
查看>>
iOS之CAGradientLayer属性简介和使用
查看>>
微信小程序UI组件、开发框架、实用库
查看>>
模块化Javascript代码的两种方式
查看>>