Linux 下编译自己的 OpenJDK7 包括JVM和JDK API
- 1.首先去 这里 http://download.java.net/openjdk/jdk7/ 下载OpenJDK7的源码zip包
- 2. 简要介绍下OpenJDK7中的目录
- hotspot: 放有OpenJDK Hotspot Virtual Machine 的源代码和make文件
- langtools: 放有OpenJDK 的javac 等工具的源代码和make文件
- cobra: 放有OpenJDK Cobra 的源代码和make文件
- jaxws: 放有OpenJDK JAXWS 的相关信息和make文件, 具体的源代码再编译时会下载
- jaxp: 放有OpenJDK JAXP 相关信息和make文件,具体的源代码再编译时会下载
- jdk: 放有OpenJDK runtime libraries 的源代码和make文件
- 直接OpenJDK 目录下有整个OpenJDK 的make文件
- 3. 检查系统的工具版本,以下配置基于OpenJDK7
- 3.1 GNU make 3.81或更高版本
- 3.2 ANT 1.7.1或更高版本
- 3.3 Sun 的BootstrapJDK6 update14或更高版本(虽然有些奇怪,但是因为编译这些Java代码需要一个可用的JDK)
- 3.4 GNU gcc 4.3或更高版本
- 3.5 ZIP 2.2或更高版本
- 3.6 FreeType 2.3或更高版本 (下载地址http://download.savannah.gnu.org/releases/freetype/ ,下载后解压)
- 3.7 Advanced Linux Sound Architecture(ALSA) 0.9.1或更高版本(下载地址http://www.alsa-project.org/main/index.php/Download)
- 4. 如果怕麻烦可以使用相关命令来安装依赖包
- Fedora: yum-builddep java-1.6.0-openjdk
- Debian: aptitude build-dep openjdk-6
- Ubuntu: sudo aptitude build-dep openjdk-6
- 其它具体的可以参考OpenJDK中的README-builds.html
- 5. 环境工具设置好后了运行以下命令以设置或取消环境变量
- export LANG=C
- export ALT_BOOTDIR=/usr/java/jdk1.6.0_30/
- export ALLOW_DOWNLOADS=true
- export USE_PRECOMPILED_HEADER=true
- export SKIP_DEBUG_BUILD=false
- export SKIP_FASTDEBUG_BUILD=true
- export DEBUG_NAME=debug
- unset CLASSPATH
- unset JAVA_HOME
- 6. 到OpenJDK目录下运行 make sanity 进行检测 如果输出如下证明OpenJDK 编译环境检测没有问题
- PREVIOUS_RELEASE_IMAGE =
- ALT_PREVIOUS_RELEASE_IMAGE =
- Sanity check passed.
- 如果是下面这样证明 环境依然有问题, 按照提示的WARNING 和 ERROR进行修改 直到检测通过
- 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.
- Exiting because of the above error(s).
- make: *** [post-sanity] Error 1
- 7. 检测通过了在OpenJDK目录下运行
- make clean
- make
- 8. 注意事项
- 8.1 保持所有命令是在同一个用户下运行的而且这个用户么还有JAVA_HOME 等环境变量
- 这样编译程序才能正确的找到环境变量和不会有权限冲突
- 8.2 OpenJDK 编译可能需要些时间,不要慌张
- 8.3 要有ALLOW_DOWNLOADS=true。否则编译jaxp的时候会出错,因为jaxp的源代码是临时下载的
- 8.3 OpenJDK 目录下的README-builds.html网页文档可以提供很多帮助.
- 9. 编译完成
- -- Build times ----------
- Target debug_build
- Start 2012-02-18 21:09:17
- End 2012-02-18 21:54:06
- 00:01:04 corba
- 00:20:53 hotspot
- 00:03:57 jaxp
- 00:04:14 jaxws
- 00:14:15 jdk
- 00:00:26 langtools
- 00:44:49 TOTAL
- 在OpenJDK目录下有个build文件夹是编译的output文件夹
- azrael@ubuntu:~/Tech/openjdk$ cd build/
- azrael@ubuntu:~/Tech/openjdk/build$ ll
- total 16
- drwxr-xr-x 4 azrael azrael 4096 Feb 18 20:37 ./
- drwxr-xr-x 12 azrael azrael 4096 Feb 18 20:35 ../
- drwxr-xr-x 27 azrael azrael 4096 Feb 18 21:53 linux-i586/
- drwxr-xr-x 26 azrael azrael 4096 Feb 18 21:08 linux-i586-debug/
- azrael@ubuntu:~/Tech/openjdk/build/linux-i586/bin$ ./java -version
- openjdk version "1.7.0-internal-debug"
- OpenJDK Runtime Environment (build 1.7.0-internal-debug-azrael_2012_02_18_20_37-b00)
- OpenJDK Server VM (build 21.0-b17-jvmg, mixed mode)
Linux 下编译自己的 OpenJDK7 包括JVM和JDK API的更多相关文章
- linux下编译gcc6.2.0
linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...
- linux下编译qt5.6.0静态库——configure配置
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- 【原创】Linux下编译链接中常见问题总结
前言 一直以来对Linux下编译链接产生的问题没有好好重视起来,出现问题就度娘一下,很多时候的确是在搜索帮助下解决了BUG,但由于对原因不求甚解,没有细细研究,结果总是在遇到在BUG时弄得手忙脚乱得. ...
- Linux 下编译、安装、配置 QT
转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...
- linux下编译eXosip、osip,以及UAC和UAS的例子
从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...
- linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- linux下编译原理分析
linux下编译hello.c 程序,使用gcc hello.c,然后./a.out就能够执行:在这个简单的命令后面隐藏了很多复杂的过程,这个过程包含了以下的步骤: ================= ...
- [转载]linux下编译php中configure参数具体含义
编译N次了 原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php ...
- linux下编译运行TIGL Viewer步骤
linux下编译运行TIGL Viewer步骤(仅为了正确编译安装的话直接跳到步骤3) 1. linux发行版选择:由于linux发行版众多,不同版本包含的库版本可能存在差别,因此需要选择正确的版本. ...
随机推荐
- Python自动化之线程进阶篇
拓展知识 什么是CPU-bound(计算密集型) 和I/O bound(I/O密集型) ? I/O bound 指的是系统的CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是 CP ...
- TextMate 小小心得
在Vim.Emacs之间纠结了很久之后,却选择了TextMate P.S. 为何Emacs和Vim被称为两大神器 中文的资料不是很多,一狠心,找了James Edward Gray II的TextMa ...
- JustMock Lite (Free Mocking Framework For .net)
通过 Nuget 安装 2. 官网下载(官网不行点这里) 3. 帮助文档 商业版和免费版区别概览 MockingContainer 测试类准备:一般来说也是业务类 public class C ...
- list<T>与ObservableCollection<T>
list<T>与ObservableCollection<T>的用法基本上是一样的.区别: list<T>: 当T继承于INotifyPropertyChanged ...
- selenium使用actions.moveToElement处理菜单
//should set firefox path //FirefoxBinary binary=new FirefoxBinary(new File("C:\\Program Files ...
- GNOME启动时激活NumLock(小键盘数字锁定)
首先下载numlockx官方源提供的安装包,解压后进入目录运行终端,切换到root账户执行以下命令: python ./setup.py 然后依次点击GNOME菜单项上的“系统->首选项-> ...
- iOS9 UI Tests探索笔记
UI Tests是什么? UI Tests是一个自动测试UI与交互的Testing组件 UI Tests有什么用? 它可以通过编写代码.或者是记录开发者的操作过程并代码化,来实现自动点击某个按钮.视图 ...
- 掌握VS2010调试 -- 入门指南
1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间.通常,debug是指发现缺 ...
- Android Shape自定义纯色圆角按钮
版权声明:分享技术,传播快乐.如果本博客对你有帮助,请在我的博客首页为我打赏吧! 在Android开发中,为响应美化应用中控件的效果,使用Shape定义图形效果,可以解决图片过多的问题. 首先看一下效 ...
- 【leetcode】Merge Two Sorted Lists(easy)
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...