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发行版众多,不同版本包含的库版本可能存在差别,因此需要选择正确的版本. ...
随机推荐
- Ext treelist 动态切换TreeStore
chooseMenu: function(_this) { //var mycomp = top.Ext.getCmp("my_comp"); var menuTreeStore ...
- 嵌套div中margin-top转移问题的解决办法
在这两个浏览器中,有两个嵌套关系的div,如果外层div的父元素padding值为0,那么内层div的margin-top或者margin-bottom的值会“转移”给外层div. <!DOCT ...
- 【Other】最近正在看的
待看: https://my.oschina.net/yunfound/blog/141222 https://www.zhihu.com/question/22925358 http://study ...
- Qt Connect 信号 槽
信号和槽机制是 QT 的核心机制 .信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方.信号和槽是 QT 自行定义的一种通信机制,它独立于标准 ...
- 用Java计算某个日期100天后的日期
用Java计算日期时间,首先考虑到时间类,Java中提供的和时间日期相关的类里,有一个Calendar类,可以获取某个时间日期. 计算某个日期100天后的日期,思路如下: 1.先设定时间,例如2017 ...
- codecademy-command line_filesystem
$:shell prompt (命令提示符) In the terminal, first you see $. This is called a shell prompt. It appears w ...
- 21. javacript高级程序设计-Ajax与Comet
1. Ajax与Comet 1.1 XMLHttpRequest对象 IE5是第一款引入XHR对象的浏览器,IE5中是通过MSXML库中的一个ActiveX对象实现的.因此在IE中可能存在MSXML2 ...
- winrt获取文件MD5码
//小文件 public static string ComputeMD5(byte[] bytes) { var alg = HashAlgorithmProvider.OpenAlgorithm( ...
- java 入门 第二季3
1.继承 1.java是单继承的,一个子类只有一个父类 父类,基类 子类,派生类 2.继承的好处:子类拥有父类的所有属性和方法,属性的修饰符不能是private 3.语法规则: class 子类 ex ...
- Mysql 基础 高级查询
在西面内容中 car 和 nation 都表示 表名 1.无论 高级查询还是简单查询 都用 select.. from..语句 from 后面 加表名 可以使一张表也可以是 ...