写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

本文详细介绍了如何在Unix环境下编译JDK源码,包括boot JDK的选择、Unix环境的准备、编译工具链的安装和其他必备工具。文章通过列举编译JDK 8和11时的具体软件版本,强调了版本匹配的重要性。通过Mercurial下载源码或直接下载源码包的方式进行了说明,并详细阐述了编译前的自动配置、真正的编译过程以及验证编译成果的步骤。此外,还提到了在源码中添加多行中文注释导致的编译问题及其解决方案。
摘要由CSDN通过智能技术生成

环境准备

首选说在前面的是,编译前的软件版本关系极其重要,自己在踩坑时,所出现的各种奇奇怪怪的问题几乎都和这个有关,后来版本匹配之后,就非常顺利了。

我们来盘点和梳理一下编译一个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 8JDK 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)

大家在编译时如果过程中有很多问题,大概率少软件没装,或者软件版本不匹配,不要轻易放弃,需要耐心自查一下。

<
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值