[笔记]Java虚拟机精讲笔记 -- 编译自己OpenJdk

编译OpenJdk

下载和配置环境

本人使用 ubuntu-12.04.5-alternate-i386.iso

下载OpenJdk源代码

http://openjdk.java.net/
直接下载地址:http://download.java.net/openjdk/jdk7u40/promoted/b43/

构建编译环境

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
Loaded plugins: fastestmirror, refresh-packagekit

以上环境依赖下载完之后,最好能安装下gcc4.4或则以上的版本,和G++


设置环境变量

在解压的根目录中新创建一个shell脚本,方便执行编译。
然后用 make sanit 命令来验证变量是否配置正确。如果运行完成之后,最后一行是 Sanity check passed. 则环境变量配置正确了(由于本人对linux不太熟悉,make sanit命令的话,shell脚本又没有被执行,貌似设置的环境变量都没有生效?这个直接开始编译就好)

#!/bin/sh
#(必配置项)设定语言选项#
export LANG=c
#(必配置项)设置编译该OpenJdk的Jdk目录,用OpenJdk如果出错,就用oracle的jdk代替#
export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk
#允许在编译过程中自动下载相关依赖#
export ALLOW_DOWNLOADS=true
#并行编译策略时的线程数量开启#
export HOST_BUILD_JOBS=4

#使用预编译头文件,加速编译#
export USE_PRECOMPILED_HEADER=true

#编译内容,如果不设置,则编译OpenJdk中的所有内容,耗时太长#
export BUILD_LANGTOOLS=true
export BUILD_JAXP=true
export BUILD_JAXWS=true
export BUILD_CORBA=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true
BUILD_INSTALL=false

#编译后的存储路径#
export  ALT_OUTPUTDIR=/home/jvm/openjdk7/build
#忽略经过信息?#
WARNINGS_ARE_ERRORS=true
#把构建日志放入指定的log中,但是要先创建该文件目录#
make 2>&1 | tee /home/jvm/openjdk7/build-log/openjdk.log

开始编译

开始编译命令:用sudo bash fileName.sh 来执行脚本。(一定要是root权限sudo)

#-- Build times ----------
Target all_product_build
Start 2015-05-23 20:20:58
End   2015-05-23 20:35:09
00:00:05 corba
00:00:11 hotspot
00:00:02 jaxp
00:00:02 jaxws
00:13:48 jdk
00:00:03 langtools
00:14:11 TOTAL
-------------------------
make[1]: Leaving directory `/home/jvm/app/openjdk'

出现以上界面,就表示已经编译完成了
sh脚本中配置的ALT_OUTPUTDIR目录,就是已经编译好的jdk,进入该目录中的bin,运行以下命令查看我们自己编译好的jdk版本

./java -version

编译失败问题

1 . Unable to load native library: /home/mengxiansen/program/java/jdk1.7.0_10/jre/lib/amd64/libjava.so: symbol JVM_SetNativeThreadName, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference

出现以上问题,可以尝试使用使用Oracle的jdk6代替jdk7编译openjdk


2 . 替换成oracle的jdk之后,出现Error: time is more than 10 years from present: 1104530400000,把以下文件中的时间修改成2010年
如果没有找到该文件,就全盘搜索
/proc/2541/cwd/jdk/src/share/classes/java/util/CurrencyData.properties

534 # TURKEY  
535 TR=TRL;2010-12-31-22-00-00;TRY
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值