- 一、下载源码
- 二、编译源码
- 1. 执行配置脚本
- https://jdk.java.net/ (一般下载比编译版本低一个版本,编译jdk13, BootJDK下载jdk12)">1.1 下载BootJDK: https://jdk.java.net/ (一般下载比编译版本低一个版本,编译jdk13, BootJDK下载jdk12)
- 2. 编译
- 1. 执行配置脚本
- 三、使用IntellJ Clion 调试源码
- 参考
以下编译的openJdk版本为openjdk13
一、下载源码
第一种方式: Mercurial 版本控制获取 源码(不推荐)
1.1 安装 Mercurial
# 其它系统请看: https://www.mercurial-scm.org/wiki/TutorialInstall
#https://www.mercurial-scm.org/wiki/Download
#注意python版本Python 2.7.13, 不能高于python3
#可以试用sudo update-alternatives --config python切换python版本
sudo apt-get install mercurial
1.2 下载源码
#像从github一样,拷贝仓库文件
hg clone http://hg.openjdk.java.net/jdk/jdk13 jdk13
cd jdk13/
#赋予脚步执行权限
chmod +x get_source.sh
#执行脚步
sh ./get_source.sh
注意:不同的jdk 可在: http://hg.openjdk.java.net/ 中找
第二种:直接下载源码包
可以从以下来两个渠道下载源码压缩包
二、编译源码
编译文档介绍:https://github.com/openjdk/jdk/blob/master/doc/building.md
1. 执行配置脚本
1.1 下载BootJDK: https://jdk.java.net/ (一般下载比编译版本低一个版本,编译jdk13, BootJDK下载jdk12)
wget https://download.java.net/openjdk/jdk12/ri/openjdk-12+32_linux-x64_bin.tar.gz
tar -zxf openjdk-12+32_linux-x64_bin.tar.gz
#解压后目录jdk-12
1.2 下载编译的源码包
wget https://download.java.net/openjdk/jdk13/ri/openjdk-13+33_src.zip
#解压
unzip openjdk-13+33_src.zip -d jdk13
cd jdk13/openjdk
1.3 执行配置
./configure \
--with-target-bits=64 \
--with-boot-jdk="../../jdk-12" \
--with-jvm-variants=server \
--disable-warnings-as-errors \
--with-debug-level=slowdebug 2>&1 | tee configure_mac_x64.log
#--with-boot-jdk="../../jdk-12" :指定BootJDK
#--with-debug-level=<level> :
release、fastdebug、slowde-bug,越往后进行的优化措施就越少,带的调试信息就越多。
默认值为release
--enable-debug:等效于--with-debug-level=fastdebug。
--with-native-debug-symbols=<method>:确定调试符号信息的编译方式,可选值为none、internal、external、zipped。
--with-target-bits=<bits>:指明要编译32位还是64位的Java虚拟机
--with-jvm-variants=<variant>[,<variant>...]:编译特定模式(Variants)的HotSpot虚拟机,可以多个模式并存,可选值为server、client、minimal、core、zero、custom。
#以下是编译时提示需要安装的依赖
#按照实际情况安装
#sudo apt-get install autoconf
#sudo apt-get install systemtap-sdt-dev
#sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
#sudo apt-get install libcups2-dev
#sudo apt-get install libfontconfig1-dev
#sudo apt-get install libasound2-dev
出现以下信息则成功
2. 编译
# 详细make请看:
#https://github.com/openjdk/jdk/blob/master/doc/building.md#running-make
export LANG=C
make clean
make all
出现以下信息则编译成功
- 测试编译好的JDK
打印以下信息,则完成编译cd ./build/linux-x86_64-server-slowdebug/images/jdk/bin
./java -version
三、使用IntellJ Clion 调试源码
1. 下载CLion: https://www.jetbrains.com/clion/
2. 安装g++ 和gdb 调试工具
sudo apt install g++ gdb
3. 将openjdk 源码整个导入Clion 中
出现以下信息则完成导入
注意:导入过程如果出现以下错误
gcc: error trying to exec 'cc1obj': execvp: No such file or directory
安装以下依赖就好了
sudo apt-get install gobjc++
4. 配置
Executable 选择编译好的java执行程序:
5. Debuger 运行
在jni.cpp 上打上断点
CLion 上运行debuger
就可以愉快调试代码了。
这里在debug时,可能直接跳过,不会停留;如果出现则需要检查Toolchain 是否选择gdb调试。
如果还是不行,只能自行google了
参考
- oracle-java下载: https://github.com/frekele/oracle-java/tags
- openjdk源码下载: https://github.com/openjdk/jdk/tags
- 编译文档 : https://github.com/openjdk/jdk/blob/master/doc/building.md
- openjdk官网:https://jdk.java.net/
- https://copyfuture.com/blogs-details/20190804163001794m3g46c38qn8845z
- https://hg.openjdk.java.net/jdk7u/jdk7u/raw-file/tip/README-builds.html