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发行版众多,不同版本包含的库版本可能存在差别,因此需要选择正确的版本. ...
随机推荐
- struts2回显指定的错误信息
<s:fielderror /> 显示全部的 错误消息(用addFieldError方法添加的 ) <s:fielderror> <s:pa ...
- String,StringBuffer,StringBuilder区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...
- django xadmin多个model的数据渲染在统一个template中
adminx.py demo class ModelAdmin(object): #.... def get_context(self): context = super(SimCardService ...
- ndk学习18: JNI之C&C++调用Java
一.Java反射机制 先了解Java反射机制原理 例子网上很多,反射很灵活 二. 在JNI层调Java 用途: Java层逆向比较容易,增加逆向门槛,把调用都写到JNI层, 让Java层无调用关系 ...
- ndk学习9: 动态使用共享库
动态使用共享库函数 dll_main 环境介绍 续上节代码 目录结构: android.mk如下: LOCAL_PATH := $(call my-dir) include $(CLEA ...
- ubuntu14.04 163sources.list
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.163 ...
- PageImpl是不是有问题?
pageable.getOffset() + content.size() : total这个API 感觉没有实现该有的功能!!!
- C#的is和as操作符来进行强制类型转换&&值类型的拆箱、装箱
if(o is Employee) { Employee e=(Employee)o; //在if语句剩余的部分中使用e; } Employee e=o as Employee; if(e!=null ...
- cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer - 拒绝连接 Connection refused
cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer - 拒绝连接 Connection refused 环境: ...
- ios 在ios9中 NSNotificationCenter addObserver 不会影响对象释放
如题,ios9上, [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test) name:@&qu ...