环境准备
首选说在前面的是,编译前的软件版本关系极其重要,自己在踩坑时,所出现的各种奇奇怪怪的问题几乎都和这个有关,后来版本匹配之后,就非常顺利了。
我们来盘点和梳理一下编译一个JDK需要哪些环境和工具:
1、boot JDK
我们要想编译JDK
,首先自己本机必须提前已经安装有一个JDK
,官方称之为bootstrap JDK
(或者称为boot JDK
)。
比如想编译JDK 8
,那本机必须最起码得有一个JDK 7
或者更新一点的版本;你想编译JDK 11
,那就要求本机必须装有JDK 10
或者11
。
所以鸡生蛋、蛋生鸡又来了...
2、Unix环境
编译JDK
需要Unix
环境的支持!
这一点在Linux
操作系统和macOS
操作系统上已经天然的保证了,而对于Windows
兄弟来说稍微麻烦一点,需要通过使用Cygwin
或者MinGW/MSYS
这种软件来模拟。
就像官方所说:在Linux
平台编译JDK
一般问题最少,容易成功;macOS
次之;Windows
上则需要稍微多花点精力,问题可能也多一些。
究其本质原因,还是因为Windows
毕竟不是一个Unix-Like
内核的系统,毕竟很多软件的原始编译都离不开Unix Toolkit
,所以相对肯定要麻烦一些。
3、编译器/编译工具链
JDK
底层源码(尤其JVM
虚拟机部分)很多都是C++/C
写的,所以相关编译器也跑不掉。
一图胜千言,各平台上的编译器支持如下表所示,按平台选择即可:
4、其他工具
典型的比如:
-
Autoconf
:软件源码包的自动配置工具 -
Make
:编译构建工具 -
freetype
:一个免费的渲染库,JDK
图形化部分的代码可能会用它
好,环境盘点就到这里,接下来具体列一下我在编译JDK 8
和JDK 11
时分别用到的软件详细版本信息:
编译JDK 8时:
-
操作系统
:macOS 10.11.6 -
boot JDK
:JDK 1.8.0 (build 1.8.0_201-b09) -
Xcode版本
:8.2 -
编译器
:Version 8.0.0 (at /usr/bin/clang)
编译JDK 11时:
-
操作系统
:macOS 10.15.4 -
boot JDK
:JDK 11.0.7 (build 11.0.7+8-LTS) -
Xcode版本
:11.5 -
编译器
:Version 11.0.3 (at /usr/bin/clang)
大家在编译时如果过程中有很多问题,大概率少软件没装,或者软件版本不匹配,不要轻易放弃,需要耐心自查一下。
<