《深入理解JAVA虚拟机》-自己动手编译JDK
2020-01-07 08:35:04来源:博客园 阅读 ()
《深入理解JAVA虚拟机》-自己动手编译JDK
环境
Ubuntu12.4-http://mirrors.163.com/ubuntu-releases/12.04/ --需要安装纯英文版,避免中文引起不必要的麻烦
OpenJDK7-https://download.java.net/openjdk/jdk7/
tips:由于OpenJDK部分代码使用java语言编写,所以需要一个编译好的jdk来编译(。。。。禁止套娃)
BootstrapJDK-jdk-7u80-linux-x64.tar.gz(可以到Oracle下载)
这里使用Oracle VM VirtualBox作为虚拟机演示
安装依赖
1.安装库
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 libxt-dev libxtst-dev
如果一次安装不成功,请多试几次,或者更换源
2.解压OpenJDK和BootstrapJDK到相应目录下
OpenJDK:/home/pumpkin/j7/openjdk
BootstrapJDK:/home/pumpkin/j7/jdk1.7
因为jdk7年代已久,需要对openjdk的文件做些许修改:
openjdk/jdk/src/share/classes/java/util/CurrencyData.properties文件,将其中所有的10年前日期改为10年以内的,否则会报错:time is more than 10 years from present
创建make脚本
在OpenJDK目录内创建此make.sh脚本,修改其中的两个路径
,并赋予执行权限
#语言选项,这个必须设置,否则编译好后会出现一个HashTable的NPE错
export LANG=C
#Bootstrap JDK的安装路径。必须设置。
export ALT_BOOTDIR=/home/pumpkin/j7/jdk1.7
#允许自动下载依赖
export ALLOW_DOWNLOADS=true
#并行编译的线程数,设置为和CPU内核数量一致即可
export HOTSPOT_BUILD_JOBS=2
export ALT_PARALLEL_COMPILE_JOBS=2
#比较本次build出来的映像与先前版本的差异。这个对我们来说没有意义,必须设置为false,否则sanity检查会报缺少先前版本JDK的映像。如果有设置dev或者DEV_ONLY=true的话这个不显式设置也行。
export SKIP_COMPARE_IMAGES=true
#使用预编译头文件,不加这个编译会更慢一些
export USE_PRECOMPILED_HEADER=true
#要编译的内容
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
#export BUILD_JAXWS=false
#export BUILD_CORBA=false
export BUILD_HOTSPOT=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/pumpkin/j7/pumpkinJDK7
#这两个环境变量必须去掉,不然会有很诡异的事情发生(我没有具体查过这些“”诡异的事情”,Makefile脚本检查到有这2个变量就会提示警告“)
unset JAVA_HOME
unset CLASSPATH
make 2>&1 | tee $ALT_OUTPUTDIR/build.log
运行make.sh
openjdk#sh make.sh
我在虚拟机中编译,大约需要23min
编译好的java -version 虚拟机信息中心会带有用户信息
原文链接:https://www.cnblogs.com/dyeed/p/12124122.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 构建自己的jar包上传至Mvaen中央仓库和版本更新 2020-06-11
- 无责任书评:每个Java程序员都应该深入理解Java虚拟机 2020-05-28
- 引入mybatis-plus报 Invalid bound statement错误怎么办,动 2020-05-28
- 搬起石头砸自己的脚,我后悔在简历上写了“精通”,结果坑了 2020-05-19
- Struts2 为什么被淘汰?自己作死! 2020-05-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash