设为首页 收藏本站
查看: 380|回复: 0

[经验分享] ubuntu 13.04环境编译OpenJDK7

[复制链接]

尚未签到

发表于 2016-4-21 07:47:45 | 显示全部楼层 |阅读模式
从openjdk代码仓库下载源码
  

  • 需要安装Mercurial(hg)版本管理工具。写道
    sudo apt-get install mercurial
     
  • 安装Mercurial的hclone扩展插件:
    写道
    hg clone http://bitbucket.org/pmezard/hgforest-crew
      
  • 将以下内容添加到$HOME/.hgrc文件中,如果没有则自己创建一个:写道
    [extensions]
    forest=/home/lichengwu/hgforest-crew/forest.py
    fetch=
     
  • 下载jdk7源码:写道
    hg fclone http://hg.openjdk.java.net/jdk7/jdk7
    cd jdk7/ && sh get_source.sh
     
直接下载源码包[推荐]
写道
http://download.java.net/openjdk/jdk7u4/promoted/b22/
 
安装编译必须组件
  

  • 安装gcc、g++、make等写道
    sudo apt-get install build-essential
     
  • 安装ant 1.7以上写道
    sudo apt-get install ant
     
  • 安装XRender写道
    sudo apt-get install libxrender-dev
    sudo apt-get install xorg-dev
     
  • 安装alsa写道
    sudo apt-get install libasound2-dev
     
  • Cups写道
    sudo apt-get install libcups2-dev
     
  • 安装jdk6写道
    #一般ubuntu都自带,没有的话
    sudo apt-get install openjdk-6-jdk
     
  •   我是使用的oracle的jdk6,可以编译成功
  • 安装零碎的工具包写道
    sudo apt-get install gawk zip libxtst-dev libxi-dev libxt-dev
测试编译脚本:
写道
export LANG=C ALT_BOOTDIR=/usr/belleing/java
#disable JAVA_HOME
export -n JAVA_HOME
export ALT_JDK_IMPORT_PATH=/usr/belleing/java
make sanity BUILD_JAXWS=false BUILD_JAXP =false
 如果出现:Sanity check passed.则表示测试编译通过了,不过也别开心得太早,真正make的时候不保证一定没问题,也许还会缺少某些依赖。
编译脚本:
写道
#!/bin/bash
# cd jdk source code folder
cd ~/workspace/openjdk
# export ALT_BOOTDIR
export LANG=C ALT_BOOTDIR=/usr/belleing/java
# set build profile,first 'chmod +x jdk_generic_profile.sh'
jdk/make/jdk_generic_profile.sh
# disable JAVA_HOME
export -n JAVA_HOME
# export ALT_JDK_IMPORT_PATH
export ALT_JDK_IMPORT_PATH=/usr/belleing/java
# start build
export ALLOW_DOWNLOADS=true
make DEBUG_NAME=all_fastdebug
#make DEBUG_NAME=all_fastdebug BUILD_JAXWS=false BUILD_JAXP=false
   
下面就是解决make出现的各种问题和解决方案:
  
  1.ERROR: You do not have access to valid Cups header files.
需要安装cpus的dev包
sudo apt-get install libcups2-dev
  2.ERROR: The version of ant being used is older than the required version of '1.7.1'. The version of ant found was ''.
这说明没有装ant
sudo apt-get install ant
  3. ERROR: FreeType version 2.3.0 or higher is required.

安装freetype的dev包
sudo apt-get install libfreetype6-dev
  4. ERROR: You seem to not have installed ALSA 0.9.1 or higher.
不需要从ALSA官网下载alsa-dev和alsa-drive, ubuntu提供包的
sudo apt-get install libasound2-dev
  5. ERROR: echo "*** This OS is not supported:" 'uname -a'; exit 1;
很奇怪的错误,anyway,注释掉hotspot/make/linux/Makefile里面的checkOS
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
  
Update: 最好的办法是在make参数后面添加 DISABLE_HOTSPOT_OS_VERSION_CHECK=OK 即可
  
  6. ERROR: error: "__LEAF" redefined [-Werror]

这个是已知的bug(http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/a6eef545f1a2), 在hopspot下打入该patch(http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/raw-rev/a6eef545f1a2)即可

7. ERROR error: converting ‘false’ to pointer type ‘methodOop’ [-Werror=conversion-null]

这个的问题是把 false 转换成 NULL的时候出错了
同样在hotspot下 打入该 patch(http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/raw-rev/f457154eee8b)
  
  8. ERROR gcc: error: unrecognized command line option '-mimpure-text'
这个-mimpure-text是gcc给Solaris的编译选项,所以注释掉即可
文件在./jdk/make/common/shared/Compiler-gcc.gmk +70

9. ERROR undefined reference to 'snd_pcm_format_**'

folow this link Build openjdk in Ubuntu 11.10
  
  在jdk/make/javax/sound/jsoundalsa/Makefile 里面

DSC0000.png
 
编译成功!
DSC0001.png
DSC0002.png
 
参考资料:
  编译:http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html
  http://hadwinzhy.gitcafe.com/blog/2013/01/21/compile-jdk/
  http://wendal.net/420.html
http://thebye85.iyunv.com/blog/1545311
  http://rednaxelafx.iyunv.com/blog/875957
  
关于为啥要自己编译jdk:http://rednaxelafx.iyunv.com/blog/1549577

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-206704-1-1.html 上篇帖子: Enable mod_rewrite in a Ubuntu server 下篇帖子: ubuntu下ssh server服务配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表