之前在mac上编译的openjdk源码jvm-0x00-编译openjdk,两个原因促使我要在Linux上操作一下
- mac机子老了,性能不行了,编译一次发烫厉害
- 一鼓作气,借着这个机会把以前没学的源码重拾
1 安装jdk21作为boot
官网下个java21用作openjdk22的boot
1 2 3 4 5 6 7
| mkdir -p MyApp/jdk/21 mv ~/MyDownload/jdk-21_linux-x64_bin.deb ~/MyApp/jdk/21 cd MyApp/jdk/21 sudo apt install ./jdk-21_linux-x64_bin.deb dpkg -l|grep jdk java -version dpkg -L jdk-21
|
在zsh中修改一下对应环境变量
2 下载源码
1 2 3 4 5 6
| git clone git@github.com:Bannirui/jdk.git cd jdk git remote add upstream git@github.com:openjdk/jdk.git git remote set-url --push upstream no_push git remote -v git checkout jdk_22_study
|
3 生成make脚本
先安装依赖
1 2 3 4 5 6
| sudo apt install autoconf sudo apt install zip sudo apt-get install libasound2-dev sudo apt-get install libcups2-dev sudo apt-get install libfontconfig1-dev sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
|
比如在用windows的wsl时,要防止自动推导当前系统以及交叉编译,明确告知就是Linux平台,build和host参数要指定
1 2 3 4 5 6 7 8 9
| bash configure \ --build=x86_64-linux-gnu \ --host=x86_64-linux-gnu \ --target=x86_64-linux-gnu \ --with-debug-level=slowdebug \ --with-jvm-variants=server \ --with-freetype=bundled \ --with-boot-jdk=/home/dingrui/MyApp/jdk/jdk-21.0.10 \ --disable-warnings-as-errors
|
看下build目录下生成的conf名称linux-x86_64-server-slowdebug
4 编译
1 2 3
| make CONF=linux-x86_64-server-slowdebug compile-commands
make CONF=linux-x86_64-server-slowdebug
|
5 运行java
1
| ./build/linux-x86_64-server-slowdebug/jdk/bin/java --version
|