Ubuntu16.04之编译OpenJDK7源代码(记第一篇)
2017-11-02 10:10
204 查看
本文主要是讲解今天实测Ubuntu16.04编译OpenJDK7源代码,方便以后的JDK源码阅读以及HotSpot的学习,如有疑问可以在底下留言,有不足之处请指正。
jdk1.6.0_45(资源是网友分享:点击一下这里)
openjdk-7u6(资源是网友分享:点击一下这里)
Ubuntu系统工具
sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant
单独下载:
sudo apt-get install libcups2-dev
sudo apt-get install ant
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev
这几个出错的概率会大一点。
博主自己的test.sh脚本
注意这个脚本要放在openjdk7解压的目录里面不是同级!有详细标注,黄色的可以修改,
看不懂的百度。
执行脚本的命令 ./test.sh
如果出现错误根据错误提示修改就好,错误很详细。
像这种是版本冲突,内核版本和JDK的有冲突,解决方案(选一种即可):
注释掉hotspot/make/linux/Makefile里面的checkOS
在make参数后面添加 DISABLE_HOTSPOT_OS_VERSION_CHECK=OK
找到SUPPORTED_OS_VERSION变量在后面追加4%
这种错误是因为日期过期了,需要修改配置文件里的参数
进入<OpenJDK源码目录>/jdk/src/share/classes/java/util/CurrencyData.properties,
找到CurencyData.properties,将所有涉及到时间修改为10年之内的时间,
例如,将2004-01-13-20-00-00 修改成 2016-01-13-20-00-00。
希望大家马到成功。
一.涉及软件工具
Ubuntu 16.04.3 LTS系统(资源地址:http://releases.ubuntu.com/16.04.3/)jdk1.6.0_45(资源是网友分享:点击一下这里)
openjdk-7u6(资源是网友分享:点击一下这里)
Ubuntu系统工具
二.JDK安装配置
这个东西比较基础,大致就是解压jdk1.6.0_45、openjdk-7u6放到一个目录下,然后在/etc/profile中配置路径,当然配置到全局中也是可以的,接着用命令行设置默认Java编译器。(其实据我实践,不设置不影响编译过程,设了当然最好,博主因为已经装了1.8版本的JDK就没设置。),初学者不懂怎么设置可以点击这里看详细操作。三.下载依赖工具
因为openjdk的源码有的使用C++编写,有的使用c编写,还有文档啊什么的一大堆,总之就是不止Java,所以要下一些依赖工具辅助编译,当然起主要作用还是jdk1.6.0_45(用官方说法就是BootStrap JDK)。下面的一串命令可以整个复制到命令行使用,有可能有个别不能下载是软件版本的原因,解决方法,根据提示更改新的版本,或者暂时去掉不能下的,之后单独下,问题不大。sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant
单独下载:
sudo apt-get install libcups2-dev
sudo apt-get install ant
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev
这几个出错的概率会大一点。
四.需要自己写一个shell脚本配置一些参数
简单的make命令了解一下,简单的shell语言格式了解一下就好了。#!/bin/bash #设置语言 export LANG=C #自己的解压路径 export ALT_BOOTDIR=/home/maozuowei/software/jdk/jdk1.6/jdk1.6.0_45 #允许自动下载依赖包 export ALLOW_DOWNLOADS=true #使用预编译头文件,不加这个编译会更慢 export USE_PRECOMPILED_HEADER=true #要编译的内容 export BUILD_LANGTOOLS=true export BUILD_JAXP=true export BUILD_JAXWS=true export BUILD_CORBA=true export BUILD_HOSTPOT=true export BUILD_JDK=true #要编译的版本 export SKIP_DEBUG_BUILD=false export SKIP_FASTDEBUG_BUILD=true export DEBUG_NAME=debug #把它设置为FALSE可以避免javaws和浏览器Java插件之类的部分build BUILD_DEPLOY=false #把它设置为false就不会build出安装包。因为安装包里有一些奇怪的依赖 #但即便不build出它也已经得到完整的JDK镜像,所以还是不用build它 BUILD_INSTALL=false #存放编译结果自己设置 export ALT_OUTPUTDIR=/home/maozuowei/software/openjdk/build #之前配置的环境变量要无效掉不然会出错 unset CLASSPATH unset JAVA_HOME #make语言 make sanity make 2>&1 | tee $ALT_OUTPUTDIR/test.log |
看不懂的百度。
执行脚本的命令 ./test.sh
如果出现错误根据错误提示修改就好,错误很详细。
五.编译过程会遇到的错误
博主遇到的错误和大家分享一下"*** This OS is not supported:" `uname -a`; exit 1; *** This OS is not supported: Linux maozuowei-Inspiron-3541 4.10.0-32-generic #36~16.04.1-Ubuntu SMP Wed Aug 9 09:19:02 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux /home/maozuowei/software/openjdk/hotspot/make/linux/Makefile:240: recipe for target 'check_os_version' failed |
注释掉hotspot/make/linux/Makefile里面的checkOS
在make参数后面添加 DISABLE_HOTSPOT_OS_VERSION_CHECK=OK
找到SUPPORTED_OS_VERSION变量在后面追加4%
< ../../../src/share/classes/java/util/CurrencyData.properties Error: time is more than 10 years from present: 1136059200000 |
进入<OpenJDK源码目录>/jdk/src/share/classes/java/util/CurrencyData.properties,
找到CurencyData.properties,将所有涉及到时间修改为10年之内的时间,
例如,将2004-01-13-20-00-00 修改成 2016-01-13-20-00-00。
六.等待编译成功
博主展示一下成功的结果希望大家马到成功。
相关文章推荐
- Ubuntu 16.04[64bit]嵌入式交叉编译环境arm-linux-gcc搭建过程图解
- Ubuntu 16.04 安装caffe(CPU)以及编译问题处理
- Ubuntu 16.04 LTS 下Nginx的编译安装与启动
- Ubuntu16.04_ROS_kinetic下如何使用OpenCV2.4进行编译
- ubuntu14.04 /16.04 编译安装OpenCV 3.2
- Ubuntu16.04编译VASP5.4.1详细过程
- ubuntu16.04通过修改transmission源码编译安装transmission,使得其能够通过ipv6在六维下载
- Ubuntu 16.04安装JAD反编译工具(Java)
- 32位的Ubuntu16.04安装QT5.8,并编译实现window环境下的代码
- ubuntu16.04编译redis desktop manager遇到的问题
- ubuntu16.04 系统成功安装 caffe 并编译(详尽版)
- Qt5.7.1 树莓派3B+ 2016-09-23-raspbian-jessie.img 交叉编译 ubuntu16.04
- Ubuntu16.04编译Android5.1源码
- ubuntu_16.04_LTS使用NDK编译FFMPEG_3.1.1
- Ubuntu 16.04 编译Android 6.0系统源码
- caffe 编译问题 ubuntu 16.04 + cuda 8 + opencv + matlab
- Ubuntu16.04交叉编译树莓派Linux-Kernel并打RT-Patch
- 在ubuntu16.04下载&编译android源代码
- Ubuntu16.04 配置sublime text 3的c编译环境
- Ubuntu 16.04下指定Sublime Text 3 默认python编译版本