从零开始—搭建单步调试JVM源码环境
编译环境
- 操作系统:Ubuntu16
- boot jdk:jdk7
- 编译的jdk:jdk8
- 看源码工具:Clion、NetBeans
编译
首先安装依赖
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-devlibxt-dev libcups2-dev libfreetype6-dev libasound2-dev ccache
之后安装boot jdk
因为openjdk源码中有些功能是用Java代码实现的,比如调试工具:jps、jstat等,还有一些核心jar包,如rt.jar、tools.jar等,都需要相应版本的JDK。boot jdk需要比你编译的jdk版本低,因此选择jdk7版本
将其直接解压到Documents目录下,然后配置下环境
vi ~/.bashrc
文件底部加入下面三句话(ziya改成你自己的用户名)
export JAVA_HOME=/home/ziya/Documents/jdk1.7.0_80 export
CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar export
PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:ANT_HOME/bin:$PATH
将修改后的配置文件载入系统
source ~/.bashrc
接下来配置openjdk
在网上下载openjdk包后,解压到相应的文件夹。
在openjdk目录下,找到configure文件
默认情况下configure不是可执行文件,执行命令
chmod u+x configure
意思是给user用户赋予文件的执行权限
接下来执行配置命令
sudo ./configure --with-target-bits=64 --with-boot-jdk=/home/ziya/Documents/jdk1.7.0_80 --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0
这中间碰到了一些小的问题
由于我的ubuntu系统语言选择的英文,所以文件夹名字默认是中文的,我的相关文件都安装在了”文档“下,导致报错。
所以在进行相关配置时尽量避开中文路径
修改文件名为中文后,成功配置
编译:
sudo make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK
ZIP_DEBUGINFO_FILES=0
出现下面的画面证明编译成功
单步调试
单步调试需要安装CLION软件,由于clion不支持makefile仅支持cmake,因此需要改写cmakelist
在打开clion后(找到clion.sh文件位置,然后再该路径下. /clion.sh),然后导入openjdk项目
在clion根目录下,新建CMakeList.txt,内容如下:
cmake_minimum_required(VERSION 3.16) project(hotspot)
file(GLOB_RECURSE SOURCE_FILES “.cpp" ".hpp” “.c" ".h”)
add_executable(hotspot ${SOURCE_FILES})
待ide自动移入配置后,即可调试
NetBeans8.2
这个IDE支持Makefile,但是高版本就不支持了,所以只能用8.2版本
注意是新建项目,它会根据Makefile将项目构建好。后面就是一直下一步、下一步……