最近在研究Java底层的运行逻辑,为了更好的透彻理解Java底层的C/C++的设计思想和原理,就编译了一把OpenJdk,结果遭遇了可种各样的坑,折腾了近两天时间才编译成功,中间搜索了Baidu和Google都没有找到系统的解决方案,现在及时把中间遇到的坑和大家分享出来同时也给自己留一个记录。
ps:make、gcc和g++的版本不宜过高,否则会由于语法的变更导致各种各样的兼容性的编译错误。由于Ubuntu18.04系统上make默认最新的版本是4.1,gcc/g++默认的版本是7.1,文章最后会附加修改make、gcc和g++版本的修改操作。
1、编译环境概述:
- 操作系统版本:Ubuntu18.04 x64;
- Linux内核版本:5.0.0-36(可以通过 uname -a 查看);
- OpenJdk版本:OpenJdk8;
- BootJdk版本:1.7.0_75;
- make版本:3.81;
- gcc版本:4.8.5;
- g++版本:4.8.5;
2、源码下载和配置:
下载源码:大家可以直接去openjdk的官网下载,也可以使用 hg 命令直接克隆官方的源码文件到本地。
openjdk的官网的下载地址:http://jdk.java.net/java-se-ri/8,大家可以自行下载,也可以直接使用下面的链接下载: