作为一位程序员,我坚信了解一件事物的最佳方式是深入到它的最底层去研究其运行的原理。既然我大部分时间都在写Java代码,那么就肯定需要了解JVM的运行原理。所以上周尝试了编译了一下JVM的开源实现:OpenJDK。
准备工作
在开始编译之前,首先需要一些准备工作:
- 操作系统:建议在2.x内核的Linux系统上编译,在Windows下编译的话还要装CYGWIN,比较麻烦,如果你在3.0以上内核版本的Linux下编译,首先你会遇到一个This OS is not supported的错误,然后即使你在编译的时候加上了DISABLE_HOTSPOT_OS_VERSION_CHECK=ok这个选项,你可能会遇到一些宏定义找不到之类的编译错误。
- 源代码:编译OpenJDK当然需要OpenJDK的源代码,可以从这里下载
- 依赖:编译OpenJDK所需的东西在下载过来的源代码包里面的README_builds.html中都有列出,这里列出一些大概的依赖,具体所需的版本可以在README_builds.html中找到:OpenJDK(是的,编译OpenJDK需要一个OpenJDK,有点鸡生蛋,蛋生鸡的感觉),make,g++,ant,axel(Linux声音相关),X11(图形相关,编译awt的时候需要),freetype2(字体相关)等
- 环境变量:编译以前请先分别设置语言和编译所需的OpenJDK的路径:
1 |
export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk
|
编译
安装好所需的依赖以后,可以用以下命令检查一下依赖是否都已经正确安装了:
如果输出没有错误,则可以用一下命令编译:
1 |
make ALLOW_DOWNLOADS= true
|
加上ALLOW_DOWNLOADS=true的原因是编译过程中ant可能会需要下载一些东西,如果你要编译一个DEBUG版本,则可以用以下命令
1 |
make debug_build ALLOW_DOWNLOADS= true
|
遇到的问题
我在编译过程还是遇到了不少问题,首先在Ubuntu 11.10下编译,遇到了前面提到的Linux内核3.0的问题,后来改到在CentOS 6下编译。
在CentOS下编译首先遇到了一个ant的一个类找不到的问题(在一个叫optional的package下),后来看了一下我直接用yum install安装的ant默认并没有安装一些optional的包,后来又用yum install安装了那个类对应的包,算是解决了这个错误。如果读者是直接在ant的官方网站下载安装应该不会有这个问题。
再之后就是在编译过程中遇到了很多缺少X11的头文件的错误,幸好发现yum有yum provides这个命令可以找到头文件所在的包,然后用yum install安装。(:-),一直在Ubuntu下用apt-get的孩子伤不起啊~~)
整个编译过程大概需要1个多小时(AMD速龙3800,2G RAM,单Job),这个期间可以搞点下午茶吃吃,搞部小电影看看~~
最后感谢下方攀同学在过程中提供的帮助,^_^
分享到:
相关推荐
OPENJDK-7 windows编译之后版本
本文将深入探讨如何编译OpenJDK源码,以及涉及到的相关工具和步骤。 首先,我们关注到"CLion-2021.1.tar.gz",这是JetBrains公司开发的C++和Python等语言的跨平台集成开发环境(IDE)。虽然OpenJDK主要用C++和Java...
具体编译过程可以参考https://blog.csdn.net/u014106644/article/details/89316483
《深入剖析OpenJDK7的LangTools源码》 OpenJDK7是Java开发的一个开源实现,它提供了Java运行环境的基础构建块。LangTools作为OpenJDK7的一部分,扮演着至关重要的角色,它是Java语言工具集的核心,包含了编译器、...
openjdk 8 编译JDK结果,自己编译,可以代替oracle jdk使用。具体编译方法也在我的共享中上传,希望对你有帮助。
本资料夹包含的内容是关于在Linux环境下编译OpenJDK7的完整过程及可能遇到的问题解决方法。 首先,要编译OpenJDK7,你需要一个Linux环境,因为OpenJDK主要是为类Unix系统设计的。推荐使用Ubuntu或Debian这样的基于...
Java JDK 1.7源码包是用于在CentOS 7操作系统上进行OpenJDK 1.8编译的重要资源。这个源码包包含了Java Development Kit的1.7版本,通常被称为JDK 7,它是Oracle公司发布的Java编程语言和Java平台标准版的一个实现。...
"orig"通常意味着原始或者未经修改的版本,这可能是一个未经打包或编译的源代码版本,开发者可以用它来编译自己的OpenJDK 6实例。 在Linux系统上安装和使用OpenJDK 6通常涉及以下步骤: 1. 解压文件:使用`tar -...
《Android 8.1系统编译与OpenJDK的深度解析》 在现代移动设备操作系统领域,Android无疑占据了举足轻重的地位。Android 8.1(也称为Oreo)作为其重要的版本之一,带来了诸多性能优化和用户体验的提升。在进行...
在介绍如何在Windows 7环境下编译OpenJDK 8源代码之前,有必要了解一些基础知识和前提条件。OpenJDK是Java平台的开源实现,其中包括JVM(Java虚拟机)和Java类库。OpenJDK的源代码使用C和C++编写,支持跨平台编译。...
总之,OpenJDK 19为Windows用户提供了完整的Java开发和运行环境,它包括了编译、运行、调试和打包Java应用程序所需的所有工具。通过解压安装包并正确配置环境变量,你可以开始享受Java 19带来的新特性和性能提升。...
标题“openjdk1.8.zip”表明这是一个包含OpenJDK 1.8版本的压缩文件,主要用于在特定操作系统上进行离线安装。OpenJDK(Open Source Java Development Kit)是Java平台标准版(Java SE)的一个开源实现,由甲骨文...
内含1.apache-ant-1.9.13-bin.zip 2.jdk-6u45-linux-x64.bin 3.openjdk-7u6-fcs-src-b24-28_aug_2012.zip 4.freetype-2.3.12.tar.gz
已编译好的java.net官网的windows版的openjdk7下载 part2 请下载共2part以后放在同一个文件夹里面解压(推荐360压缩,我是用这个加压的) 所有下载链接: http://blog.csdn.net/qgmzzn1/article/details/16918153
### Ubuntu 源码编译 OpenJDK 8 #### 一、准备工作 **1.1 Ubuntu 16.04 镜像下载** 为了准备一个适合编译 OpenJDK 8 的环境,首先需要下载 Ubuntu 16.04 的镜像。推荐使用华为开源镜像站提供的资源,下载的镜像为...
CentOS 7 安装 OpenJDK 1.7 需要经过多个步骤,包括安装编译库、下载 OpenJDK 源代码、安装 Boot JDK、配置环境变量、解压 OpenJDK 压缩文件、编译 OpenJDK 等。下面是详细的安装步骤: 安装编译库 在 CentOS 7 中...
总的来说,这个压缩包提供了一个无需编译、开箱即用的64位OpenJDK 1.8环境,适合在Windows 10和Windows 7上运行,是Oracle JDK 8的一个免费替代选择,特别适合那些受到Oracle收费政策影响的开发者。使用这个版本,...
OpenJDK 8是Java开发工具包(Java Development Kit)的一个开源...如果你打算手动编译和安装OpenJDK,过程会更复杂,包括获取源代码、配置、编译和安装等步骤。这通常适用于自定义编译选项或解决特定系统的兼容性问题。
只能是自己编译了,Linux系统ARM架构的CPU环境通用。 二进制包需要自己配置环境变量,我一般是配置在/etc/profile.d/java.sh JAVA_HOME=/opt/jdk1.8.0_352 PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME PATH 配置...
总的来说,Red Hat编译的OpenJDK 1.8.0.181 Windows x86_64版本是一个针对企业级Windows环境优化的Java运行时,提供了安全性和性能保障,适用于需要长期稳定支持且运行在64位Windows系统上的Java应用。