构建Jvm环境
Linux环境下
准备环境
-
需要安装高版本JDK 推荐 JDK 16+
-
需要编译的jdk下载下来
git clone https://git.openjdk.java.net/jdk/
-
环境安装
# 下载openjdk16 # https://jdk.java.net/16/ wget https://download.java.net/java/GA/jdk16.0.2/d4a915d82b4c4fbb9bde534da945d746/7/GPL/openjdk-16.0.2_linux-x64_bin.tar.gz # 安装openJdk16 / 如果在后面的编译中报错,就换高版本JDK sudo mkdir -p /usr/java/openjdk sudo cp openjdk-16.0.2_linux-x64_bin.tar.gz /usr/java/openjdk/openjdk-16.0.2_linux-x64_bin.tar.gz cd /usr/java/openjdk sudo tar -xzvf openjdk-16.0.2_linux-x64_bin.tar.gz #部署环境 sudo nano /etc/profile ## 在文件尾部添加 # OpenJDK 16.0.2 JAVA_HOME=/usr/java/openjdk/jdk-16.0.2 PATH=$PATH:$HOME/bin:$JAVA_HOME/bin export JAVA_HOME export PATH # Ctrl +o回车保存,ctrl+x离开; source /etc/profile # 安装编译jdk要求的依赖 sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev binutils libmotif-dev ant autoconf unzip zip #卸载openjdk 11 sudo apt-get remove openjdk* sudo source /etc/profile
-
进入git clone 后的目录
cd jdk
-
开始编译
bash configure
-
如果正常会显示如下(非正常按照提示apt install缺失依赖即可 )
#示例 Configuration summary: * Debug level: fastdebug * HS debug level: fastdebug * JVM variants: server * JVM features: server: 'aot cds cmsgc compiler1 compiler2 epsilongc g1gc graal jfr jni-check jvmci jvmti management nmt parallelgc serialgc services shenandoahgc vm-structs zgc' * OpenJDK target: OS: linux, CPU architecture: x86, address length: 64 * Version string: 12-internal+0-adhoc.weizhishang.jdk12-06222165c35f (12-internal) Tools summary: * Boot JDK: openjdk version "11.0.10" 2021-01-19 OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.18.04) OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.18.04, mixed mode, sharing) (at /usr/lib/jvm/java-11-openjdk-amd64) * Toolchain: gcc (GNU Compiler Collection) * C Compiler: Version 7.5.0 (at /usr/bin/gcc) * C++ Compiler: Version 7.5.0 (at /usr/bin/g++) Build performance summary: * Cores to use: 3 * Memory limit: 3932 MB
-
最后进行编译,去喝杯咖啡,这个过程得十几分钟
make images
-
没有报错的话,测试下编译后的jdk版本
./build/*/images/jdk/bin/java -version
-
基本测试
make run-test-tier1
## Linux增强
# 修改镜像源 Ubuntu 20.04 LTS
/etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
导入到Clion
在项目根目录新加CMakeLists.txt:
cmake_minimum_required(VERSION 3.7)
project(hotspot)
include_directories(
src/hotspot/cpu
src/hotspot/os
src/hotspot/os_cpu
src/hotspot/share
src/hotspot/share/precompiled
src/hotspot/share/include
src/java.base/unix/native/include
src/java.base/share/native/include
src/java.base/share/native/libjli
)
file(GLOB_RECURSE SOURCE_FILES "*.cpp" "*.hpp" "*.c" "*.h")
add_executable(hotspot ${SOURCE_FILES})
参考资料
https://www.codenong.com/js108c984f8872/
https://zhuanlan.zhihu.com/p/366984099
Q.E.D.