Linux Mint 17.3 Rosa下JDK编译
来源:互联网 发布:win7下装linux双系统 编辑:程序博客网 时间:2024/05/22 01:52
通过《深入理解Java虚拟机:JVM高级特性与最佳实践(第三版)》的学习,觉得有很多细节需要注意,特此记录以备不时的参考之需…
Linux Mint 17.3 Rosa下Java虚拟机(HOTSPOT)源代码编译步骤
概述
1. hotspot源代码包含在openJDK7中
2. penJDK7包含了JDK的Java代码,所以要用JDK6对这部分代码进行编译(有点类似于gcc高版本代码要用gcc低版本编译一样)
3. 本次编译的JDK版本:openJDK7u40
4. 也可以用于 Ubuntu系操作系统
5. http://www.linuxidc.com/Linux/2016-04/130484.htm
准备
1. penJDK7源代码链接: http://pan.baidu.com/s/1hslDSXY 密码:js56,强烈建议初学者,用这个jdk源代码,按照下面的教程配置。其他源代码编译时,可能会出现各种问题
2. 工作环境:Linux Mint 17.3 Rosa
编译步骤
1. 安装依赖项:
sudo apt-get install build-essential gawk m4 openjdk-6-jdk libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev X11proto-print-dev binutils libmotif3 libmotif-dev ant
2. 解压缩openJDK7源代码:
我把它放置在当前用户目录下面:/home/well/jdk/openjdk7u40/,如下图:
3. 编译前环境配置:
命令行中,cd 进入 openjdk7u40 源代码目录,切换成 root 用户:su root ,如下图:
再导入以下环境变量:
export LANG=C
exportALT\_BOOTDIR=/usr/lib/jvm/java-6-openjdk-i386
exportALT\_JDK\_IMPORT\_PATH=/usr/lib/jvm/java-6-openjdk-i386
export ALLOW\_DOWNLOADS=true
export HOST\_BUILD\_JOBS=4
export USE\_PRECOMPILED\_HEADER=true
export BUILD\_LANGTOOLS=true
export BUILD\_JAXP=true
export BUILD\_JAXWS=true
export BUILD\_CORBA=true
export BUILD\_HOTSPOT=true
export BUILD\_JDK=true
export BUILD\_INSTALL=false
exportALT\_OUTPUTDIR=/home/well/jdk/openjdk7u40/build
unset JAVA\_HOME
unset CLASSPATH
export WARNINGS\_ARE\_ERRORS=false
export SKIP\_DEBUG\_BUILD=false
export SKIP\_FASTDEBUG\_BUILD=true
export DEBUG\_NAME=debug
说明:以上环境变量命令直接复制到命令窗口执行即可,其中 exportALT\_BOOTDIR=/usr/lib/jvm/java-6-openjdk-i386 和exportALT\_JDK\_IMPORT\_PATH=/usr/lib/jvm/java-6-openjdk-i386两个是 openJDK6的路径,一般不需要修改(需要时可以指定其它的JDK作为启动器),装完openjdk-6-jdk一般就在这个路径上面,exportALT\_OUTPUTDIR=/home/well/jdk/openjdk7u40/build 这个是指定到自己需要编译的 openJDK7 对应路径
4. JDK编译前检查:
命令行执行make sanity,如下图:
按照上面环境变量配置后,make sanity一般不会出问题
5. JDK源码的编译:
命令行执行make DEBUG\_BINARIES=true,如下图:
一定要加上DEBUG\_BINARIES=true参数,以便在编译期间输出详细信息,经过半个多小时基本能编译完成
6. JDK源码编译后:
编译后的位置如下图:
build和build-debug目录里面的东西就是我们需要的咯
然后进入./build/j2sdk-image/目录(或者build-debug、build-fastdebug这两个目录),这是整个JDK的完整编译目录,复制到 JAVA\_HOME 目录,就可以作为一个完整的JDK使用,编译出来的虚拟机,在 java -version命令中带有用户名以及编译的日期时间等信息,如下图:
7. 后记
在大多数时候,如果我们并不关心JDK中HotSpot虚拟机以外的内容,只想单独编译HotSpot虚拟机的话(例如调试虚拟机时,每次改动程序都执行整个OpenJDK的MakeFile,编译速度肯定受不了),那么使用 ./hotspot/make 目录下的MakeFile进行替换即可,其他参数设置保持不变,这时候虚拟机的输出结果存放在./build/hotspot/outputdir/linux_i486_complier2/ 目录中(在不同的机器上面,最后那个目录的名称会有差别,linux表示Linux系统,i486表示32位JDK,complier2表示Server VM,complier1表示Client VM),进入后可以见到几个目录如下:
这些目录对应了不同的优化级别,级别越高,性能自然越好,但是输出代码与源代码的差距就越大,难于调试,具体使用那个目录的内容,取决于make命令后面的参数。
遇到的问题
1. 编译过程中出现./gamma: relocation error:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.36.x86_64/jre/lib/amd64/libjava.so:symbol JVM_FindClassFromCaller, version SUNWprivate_1.1 not defined in filelibjvm.so with link time reference 异常,解决方案:
编辑./hotspot/make/linux/Makefile,注释掉所有的test\_gamma所在行
2. 编译过程中出现Error: time is more than 10 years from present: 1136059200000错误,解决方案:
修改CurrencyData.properties(路径:./jdk/src/share/classes/java/util/CurrencyData.properties)
修改108行:AZ=AZM;2011-12-31-20-00-00;AZN
修改381行:MZ=MZM;2011-06-30-22-00-00;MZN
修改443行:RO=ROL;2011-06-30-21-00-00;RON
修改535行:TR=TRL;2011-12-31-22-00-00;TRY
修改561行:VE=VEB;2011-01-01-04-00-00;VEF
- Linux Mint 17.3 Rosa下JDK编译
- linux mint下配置jdk,tomcat
- Linux Mint 安装JDK
- Linux Mint/Ubuntu下配置安装JDK、SDK环境变量
- linux mint 安装配置jdk
- Linux Mint 15下编译Chromium for Android
- Linux Mint下编译安装支持SPDY协议的Wireshark
- Linux Mint编译insight笔记
- Linux Mint:JDK的安装另一种方法
- Linux Mint:JDK 1.8 的安装
- linux mint下安装thrift
- linux mint 下安装 wwscan
- Linux Mint 17.3 从零开始
- LinuxMint17.3Rosa下安装Apache流程
- 自己动手在Linux下编译JDK
- 经验分享:在mint-linux 下进行 PHP源代码编译
- Linux mint 18编译CUDA 7.5 Sample
- Linux Mint 17.3设置屏幕分辨率
- 什么是 Zend ? 什么是 PHP ?
- C语言入门第十篇,switch语句练习题
- 多牛传媒推出智能化新媒体平台,谷歌发布两项云端自然语言处理功能 | 大数据24小时
- 专访阿里金融云徐敏:为普惠金融地提供技术原力
- 金融科技&大数据产品推荐:兴业研究地方政府信用评级产品
- Linux Mint 17.3 Rosa下JDK编译
- 第5章 遮羞的艺术——Windows游戏绘图技巧
- post提交数据时显示异常
- 关于jsp与servlet之间传值的问题及getParameter和getAttribute的用法
- oracle给日期赋值
- Ant基础
- 金融科技&大数据产品推荐:Stratifyd大数据智能分析平台
- 谷歌收购云服务公司Bitium叫板微软,苹果Safari浏览器新功能可收集用户数据 | 大数据24小时
- 金融科技&大数据产品推荐:日志易—机器数据实时搜索分析引擎