周末在家无事,想尝试自己动手编译下openjdk,(作为一个java程序员,这么多年还是第一次动手编译openjdk,想起来让人汗颜),中间各种曲折,好了,废话不多说,开始正题。
首先我安装了mercurial,按照《深入理解java虚拟机》一书中的说法,可以从source bundle release页面下载打包好的源码,jdk7地址为:http://jdk7.java.net/source.html。但是我考虑到openjdk中有jdk9了,所以放弃尝试编译jdk7,决定尝试jdk9,可惜source bundle release页面并没有提供openjdk9的打包下载,于是只能选择使用mercurial来下载源码。
如果还没有安装mercurial的话,请自行下载(我使用如下方式安装:brew install mercurial)。好了,现在我就可以使用mercurial clone一个jdk9的源码了。
在终端依次使用如下命令:
hg clone http://hg.openjdk.java.net/jdk9/dev
chmod 755 get_source.sh
./get_source.sh
就可以下载openjdk9的源码了。不知道是不是墙的原因,我家里的网一直下不下来,后来我申请了一个免费一年的亚马逊云服务器(美国的)来下载,那速度,真是不用多说了。(如果大家也有兴趣的话,可以自行申请,网上关于这方面的文章不少,请google)
我也从网上查了些资料,都说编译是需要X11,所以我也装了一个XQuartz,这个最新版的是2.7.7,我推荐安装2.5.5,因为最新版的好像不起作用,具体可以参考Building OpenJDK 8 on Mac OS X Mavericks(这文章还是很具有参考价值的)。除此之外还需要下载一个xcode,我本地的版本是Version 6.1.1(Yosemite中不集成xcode,所以需要下载,建议版本5以上)。
好了,基本的工具都已准备完毕,可以开始编译了,我直接build fastdebug版本的。
jdk9-dev quinn$ chmod 755 configure
jdk9-dev quinn$ ./configure --enable-debug --with-target-bits=64
得到结果
A new configuration has been successfully created in
/Users/quinn/study/jdk9-dev/build/macosx-x86_64-normal-server-fastdebug
using configure arguments '--enable-option-checking=fatal --enable-debug --with-target-bits=64'.
说明成功了,下面我们继续make。
jdk9-dev quinn$ make
Building OpenJDK for target 'default' in configuration 'macosx-x86_64-normal-server-fastdebug'
Compiling 8 files for BUILD_TOOLS_LANGTOOLS
警告: [options] 未与 -source 1.6 一起设置引导类路径
1 个警告
警告: [options] 未与 -source 1.6 一起设置引导类路径
1 个警告
Parsing 1 properties into enum-like class for jdk.compiler
Compiling 20 properties into resource bundles for jdk.compiler
Compiling 5 properties into resource bundles for jdk.dev
Compiling 10 properties into resource bundles for jdk.javadoc
Compiling 8 files for BUILD_TOOLS_LANGTOOLS
警告: [options] 未与 -source 1.6 一起设置引导类路径
1 个警告
警告: [options] 未与 -source 1.6 一起设置引导类路径
1 个警告
Parsing 1 properties into enum-like class for jdk.compiler
Compiling 20 properties into resource bundles for jdk.compiler
Compiling 5 properties into resource bundles for jdk.dev
Compiling 10 properties into resource bundles for jdk.javadoc
Compiling 820 files for BUILD_INTERIM_LANGTOOLS
[...]
虽然过程中历经曲折(中间会有很多警告),但我们依然得到最好的结果
----- Build times -------
Start 2015-01-19 18:00:21
End 2015-01-19 18:13:52
00:13:31 TOTAL
Start 2015-01-19 18:00:21
End 2015-01-19 18:13:52
00:13:31 TOTAL
-------------------------
好,大功告成了!
我们来简单测试一下,打开build目录
jdk9-dev quinn$ cd build/macosx-x86_64-normal-server-fastdebug/
macosx-x86_64-normal-server-fastdebug quinn$ ls
Makefile build.log compare.sh* config.status* hotspot-spec.gmk make-support/ support/
Makefile build.log compare.sh* config.status* hotspot-spec.gmk make-support/ support/
bootcycle-spec.gmk buildtools/ config.log hotspot/ jdk/ spec.gmk
macosx-x86_64-normal-server-fastdebug quinn$ cd jdk/bin/
bin quinn$ ls
appletviewer* java* javap* jdeps* jjs* jsadebugd* keytool* policytool* schemagen* unpack200*
idlj* javac* jcmd* jhat* jmap* jstack* native2ascii* rmic* serialver* wsgen*
jar* javadoc* jconsole* jimage* jps* jstat* orbd* rmid* servertool* wsimport*
idlj* javac* jcmd* jhat* jmap* jstack* native2ascii* rmic* serialver* wsgen*
jar* javadoc* jconsole* jimage* jps* jstat* orbd* rmid* servertool* wsimport*
jarsigner* javah* jdb* jinfo* jrunscript* jstatd* pack200* rmiregistry* tnameserv* xjc*
bin quinn$ ./java -version
openjdk version "1.9.0-internal-fastdebug"
OpenJDK Runtime Environment (build 1.9.0-internal-fastdebug-quinn_2015_01_19_17_58-b00)
openjdk version "1.9.0-internal-fastdebug"
OpenJDK Runtime Environment (build 1.9.0-internal-fastdebug-quinn_2015_01_19_17_58-b00)
OpenJDK 64-Bit Server VM (build 1.9.0-internal-fastdebug-quinn_2015_01_19_17_58-b00, mixed mode)
可以看到已经成功了,还带自己机器名哦。
最后,说下我遇到的问题吧,最开始,由于在本机一直都无法clone下openjdk9的源代码,我就先尝试了编译openjdk8,参考了上面提到的那篇文章,最开始还算顺利,但后来我遇到的问题就和文章中提到的不一致了,在网上遍寻解决方案后无果,最后发现了openjdk的往来邮件,我这里摘抄一行:
The short answer is that building jdk8 on Yosemite is not supported.
原来人家根本不支持jdk8在Yosemite上编译。后来我又在openjdk的wiki中找到了各个版本在不同平台的支持情况,最后才选择了编译openjdk9。再来说下上面那篇文章Building OpenJDK 8 on Mac OS X Mavericks,我一开始就是按照这篇文章来操作的,在编译openjdk8的时候前面的几个问题基本跟这个一样,一直到saproc_make_fobjc_exceptions_flag_fix.patch之后才出现问题。后来在编译openjdk9的时候,由于没有还原环境,主要是gcc和g++(文章中使用apple-gcc42),中间还出现了一些问题,出现问题的原因与此类似,最后还是选择xcode中的clong来编译。
好了,最后祝大家在编译的过程中good luck!
相关推荐
用transmac恢复到U盘即可安装
"org.chameleon.Boot"是OS X中的一个启动加载器,它主要用于非苹果认证的硬件上运行Mac OS X。Chameleon是著名的第三方启动加载器,它允许用户在非Apple主板上安装和启动OS X,这在破解或装机社区中非常常见。...
JXA-Cookbook, 在 Mac OS X Yosemite 中,用于自动化的JavaScript cookbook 用于自动化的 JavaScript自动化的JavaScript是 Mac OS X Yosemite 中的新东西。 它允许你使用JavaScript语言控制应用程序。 多么精彩 !...
标题中的“VM虚拟机可以安装OS X Yosemite 10.10 DP1”指的是使用虚拟机软件,如VMware,可以在非苹果硬件上安装并运行苹果的操作系统OS X Yosemite的Developer Preview 1版本。这个技术对于开发者或者对新系统感...
mac os x yosemite出现王玉bug怎么办?.docx
If you have a Mac, you might not even recognize OS X Yosemite. Apple redesigned its look, enhanced it with 200 new features, integrated it with the iPhone in clever ways but once again forgot to ...
9. 成功兑换后,App Store会显示OS X 10.10 Yosemite Beta已经开始下载,等待下载完成,你就可以安装并体验这个测试版操作系统了。 通过这些步骤,你不仅能够了解如何获取OS X Yosemite Beta的兑换码,还能学习到...
通过“Continuity”功能,用户可以在OS X Yosemite和运行iOS 8的设备之间无缝切换,比如使用iPhone拨打或接听电话,直接在Mac上完成,这极大地提升了工作效率。同时,新的AirDrop功能允许用户在Mac和iOS设备间直接...
总的来说,OS X Yosemite 10.10.3 Beta3是苹果在系统升级和创新道路上的重要一步,它不仅增强了硬件设备间的协同,如Apple Watch的支持,而且通过Photos应用和emoji更新提升了用户日常使用的便利性和娱乐性。...
总之,"OS X 10.10 Yosemite VMware Image sn"是针对那些希望在非Mac硬件上体验或开发针对Mac平台的应用的用户的资源。正确使用这个镜像文件需要遵循上述步骤,并确保所有必要的软件许可证和硬件兼容性条件得到满足...
OS X Yosemite是苹果公司在2021年发布的一款桌面操作系统,它是继OS X Mavericks之后的重要更新。Yosemite在设计和性能上都进行了显著的改进,为用户带来了更佳的使用体验。以下是对OS X Yosemite系统使用效果的详细...
Yosemite 是 Google Chrome 的主题,以匹配 Mac OS X 10.10 'Yosemite' 的用户界面/设计。 它将浏览器主题化以与 OS X 10.10 的其余部分融为一体。 这个主题是为 Mac OS X 10.10 设计的,看起来最好,但也适用于较...
制作完成后,你就可以使用这个U盘在任何兼容OS X Yosemite的Mac上启动安装程序。在目标Mac上插入U盘,然后在开机时按住Option键,选择U盘作为启动设备。 安装过程中,你可以选择使用磁盘工具进行硬盘格式化,以实现...
苹果的OS X Yosemite(优胜美地)是其Mac操作系统的一个重要版本,而Beta版则是提供给开发者和早期采用者试用的预发布版本,以便在正式推出前收集反馈并进行优化。本文将详细介绍如何获得并使用OS X Yosemite ...
1. **美观的外观设计**:OS X Yosemite在界面设计上进行了革新,引入了更为简洁、透明的元素,使得整体视觉效果更加现代和精致。图标和色彩搭配的改进旨在提升用户的使用体验,提供一个令人愉悦的工作环境。虽然美观...
总的来说,OS X 10.10 Yosemite 内置壁纸代表了苹果在操作系统界面设计上的一次重要迭代,它将自然风光与科技完美融合,创造出一种和谐的视觉体验。无论你是苹果的忠实粉丝还是寻求桌面美化的人,这些壁纸都是一个...
OS X Yosemite是苹果公司在2014年推出的操作系统,它是OS X系列的一个重要版本,带来了许多视觉和功能上的更新。Yosemite的设计理念主要体现在其扁平化的界面风格,这与iOS 7的设计语言保持一致,旨在提供更为简洁、...
在该年之后的2001年9月25日,Mac OS X 10.1 Puma推出,增加了系统的效能和提供不存在的特色,像是 DVD播放。由于 10.0 的不好名声,苹果为 10.0 的使用者推出免费的升级 CD,此为对于只有运行 Mac OS 9 的人推出 $...
总体来说,OS X Yosemite 10.10 的正式版是一个全方位的升级,它不仅在视觉上为用户带来新的体验,还在功能上提升了用户的操作效率和系统的实用性。对于高级用户而言,这些改变提供了更强大的工具和更深度的集成,...