在linux下编译openjdk7

最近刚开始看《深入理解JAVA虚拟机》这本书。第一章的实践是自己手动编译openjdk7,但书上的步骤都是基于windows的,于是在网上搜了一下linux下编译openjdk的资料:
[url]http://blog.csdn.net/kindazrael/article/details/7266314[/url]
[url]http://guoh.org/lifelog/2011/05/compile-openjdk-by-yourself/[/url]
这辆篇文章都说的比较详细。其实,最好的文档是openjdk源码包中的README-builds.html,网上的资料基本是对其的翻译+精简。

资料已经那么全了,我就不重复了,主要是记录一些自己碰到的问题。

1. 编译期间会依赖很多其他的包,ubuntu下最简单的方法是sudo apt-get build-dep openjdk-7(文档里些的是sudo aptitude build-dep openjdk-6,但新版的ubuntu貌似已经不自带aptitude,用apt-get会比较方便,另外我把openjdk6改成了openjdk7,编译没出问题,应该两者依赖的包没有什么区别)。这样的话,就不需要挨个下载依赖包编译,也省去了设置一堆环境变量(例如ALT_CUPS_HEADERS_PATH ALT_FREETYPE_LIB_PATH ALT_FREETYPE_HEADERS_PATH)。

我最终的环境变量设置为:

export LANG=C
export ALT_BOOTDIR=$JAVA_HOME
export ALLOW_DOWNLOADS=true
unset CLASSPATH
unset JAVA_HOME

以上设置缺一不可。

2. 另外,如果你的系统版本比较新的话,可能会无法通过hotsopt的系统版本检查,这个时候只需要修改openjdk/hotspot/make/linux下的Makefile文件。注释掉如下几行就OK了。

check_os_version:
#ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
# $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1;
#endif


3. 可能会遇到和"javax/sound/jsoundalsa"相关的一个错误,网上搜了一下这个貌似是openjdk的一个bug,有人提供了补丁[url]http://mail.openjdk.java.net/pipermail/build-dev/2012-January/005382.html[/url]。只需要修改openjdk/jdk/make/javax/sound/jsoundalsa目录下的Makefile文件,找到
LDFLAGS += -lasound

将其替换成
OTHER_LDLIBS += -lasound

即可。
也有说换成EXTRA_LIBS的([url]http://blog.csdn.net/yhmhappy2006/article/details/7281710[/url]),没有试过,不知道可不可行。
EXTRA_LIBS += -lasound
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值