编绎OpenJDK
因为对于Java里的vtable,itable,有个地方还没搞明白,不得已去下个OpenJDK来研究下。
本来很不愿意去编绎OpenJDK,因为很有可能做的只是无用功,还有可能要去解决各种找不到链接库的问题。
不过,没想到虽然有些麻烦,但是出人意料的顺利。
环境:ubuntu 13.10,已经安装了oracle jdk7。
首先下载:
wget http://download.java.net/openjdk/jdk7u40/promoted/b43/openjdk-7u40-fcs-src-b43-26_aug_2013.zip
再用unzip解压。
unzip openjdk-7u40-fcs-src-b43-26_aug_2013.zip
在解压后的文件夹里,可以发现有一个“README-builds.html”的文件,这个就是编绎的说明了。
或者在网上也有:
http://hg.openjdk.java.net/jdk7/build/raw-file/tip/README-builds.html#ubuntu
里面虽然关于ubuntu的最后是9.04版本,不过可以对照着画葫芦:
安装依赖相关的包:
sudo aptitude build-dep openjdk-7
因为我已经安装了oracle jdk,所以就没有再安装openjdk7了,事实证明,不用安装openjdk7也可以。
据README里的说明,先用下面的命令来检查下:
make sanity
如果提示下面的错误:
WARNING: LANG has been set to zh_CN.UTF-8, this can cause build failures.
Try setting LANG to 'C'.
则先执行:
export LANG=C
如果提示JAVA_HOME已经设置了:
ERROR: Your JAVA_HOME environment variable is set. This will
most likely cause the build to fail. Please unset it
and start your build again.
则用unset取消:
unset JAVA_HOME
还要设置下这个环境变量:
export ALT_BOOTDIR=/usr/lib/jvm/java-7-oracle
最后,可以用make all来编绎了。不过编绎一次太慢了。还有下面的这些编绎选项,在Makefile里可以看到:
--- Common Targets --- \n\
all -- build the core JDK (default target) \n\
help -- Print out help information \n\
check -- Check make variable values for correctness \n\
sanity -- Perform detailed sanity checks on system and settings \n\
fastdebug_build -- build the core JDK in 'fastdebug' mode (-g -O) \n\
debug_build -- build the core JDK in 'debug' mode (-g) \n\
clean -- remove all built and imported files \n\
clobber -- same as clean \n\
可以考虑用make fastdebug_build来快速编绎。
最后生成的文件当然在build文件夹下了。
对于debug版,可以用下面的命令来查看编绎出来的java示持哪些JVM的配置项:
./java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version
如果是非debug,则可以使用下面的命令来输出可用的JVM配置项:
./java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
编绎OpenJDK的更多相关文章
- 编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤
编绎整个OpenJDK要很久,而且有很多东西是不需要的.研究HotSpot的话,其实只要下HotSpot部分的代码就可以了. 下面简单记录下编绎调试HotSpot一些步骤. 一.编绎 进入hotsop ...
- Linux CentOS 编绎安装Python 3.5
Linux CentOS 编绎安装Python 3.5 先决条件(若无安装,则不能编绎使用idle3):yum install tk-devel xz -d Python-3.5.0.tar.xzta ...
- 编绎openssl杂记(window)
Window 下 OpenSSL 编绎过程 1. 下载 ActivePerl-5.12.4.1205 , openssl-0.9.8 , 配置Perl环境变量 , 解压openssl-0.9.82. ...
- JavaScript构建(编绎)系统大比拼:Grunt vs. Gulp vs. NPM
Nicolas Bevacqua进行了一个比较JavaScript构建(编绎)系统的任务.他对三巨头: Grunt, Gulp and NPM进行了比较,并讨论了每种的优缺点. By Nicolas ...
- 编绎报错,解决方法objc_msgSend too many arguments to function call,expected 0, have3 (转)
编绎报错,objc_msgSend too many arguments to function call,expected 0, have3 解决方法:
- CentOS编绎gcc
1.解压tar -jxvf gcc-6.3.0.tar.bz2 -C ~/dev/2.下载前前提软件包cd gcc-6.3.0 ./contrib/download_prerequisitescd . ...
- Ubuntu编绎 Objective C程序
1.安装如下组件 sudo apt-get install如下组件:build-essential gobjc gobjc++ gnustep-devel 2.在工作目录建立下如Shell脚本,并更改 ...
- 快速反编绎jar war包
反编译这些class文件或jar包或war包,用TTools https://github.com/Supermax197/TTools [root@ok action]# tree /home/ok ...
- python 2.5源代码编绎
VS C++项目中,选择工程项名称,右菜单中选择--->仅适用于项目---->仅生成(项目) 1.make_buildinfo,make_versioninfo make_buildinf ...
随机推荐
- Connection for controluser as defined in your configuration failed.
在mysql中使用事件调度器(计划任务), 语句写好了,运行也ok,可是却没有预期的结果.网上总结了非常多计划任务失效的原因.没有一种适合我. 在phpmyadmin中打开事件表,发现以下一串红色的提 ...
- 解決 centos中-bash: vim: command not found
用centos 的主机的時候, 用 vim 时出现 -bash: vim: command not found. 只能使用 vi. 那么如何安裝 vim 呢? 输入 rpm -qa|grep vim ...
- UIAlertView笔记
链接地址:http://www.cnblogs.com/scandy-yuan/archive/2013/03/11/2954194.html 1. 最简单的用法 UIAlertView*alert ...
- STL之queue(单向队列)
单向队列中的数据是先进先出(First In First Out,FIFO).单向队列一共6个常用函数(front().back().push().pop().empty().size()) #inc ...
- BZOJ 1642: [Usaco2007 Nov]Milking Time 挤奶时间( dp )
水dp 先按开始时间排序 , 然后dp. dp( i ) 表示前 i 个时间段选第 i 个时间段的最优答案 , 则 dp( i ) = max( dp( j ) ) + w_i ( 0 < j ...
- Oracle语句优化规则(一)
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化 ...
- PHP学习建议(来自老手)
框架太多了,有一个用着,先用熟练,因为框架思想区别不大. 用熟悉一个,再看其他,就容易多.看那么多,没有一个熟悉的,还是什么也不知道. 框架还是要用熟悉才行,然后才是产品如何设计,mysql性能真的有 ...
- geoserver图层属性查询及查询结果转换为arcgis js api能使用的格式
一个项目使用了ArcGIS JS API开发GIS展示层,但GIS服务使用了Geoserver,这时加载Geoserver数据和查询数据就和之前完全不一样了,以下介绍下我使用ArcGIS JS API ...
- 谷歌浏览器javascript调试教程
扫扫关注"茶爸爸"微信公众号 坚持最初的执着,从不曾有半点懈怠,为优秀而努力,为证明自己而活. 回复:"茶爸爸" 看看有什么!! 怎样打开Chrom ...
- cocos2dx进阶学习之CCTMXTiledMap
继承关系 CCTMXTiledMap -> CCNode 它由CCNode派生,我们已经知道CCNode是cocos2dx的舞台对象的公共父类,所以CCTMXTiledMap也是个舞台对象 成员 ...