You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Linux x64环境下不依赖预编译BootJDK构建OpenJDK的可行性问询

无预编译BootJDK构建OpenJDK(RHEL系发行版)

首先明确核心结论:单独编译Hotspot绕不开BootJDK依赖——Hotspot的构建流程不仅要编译C/C++代码,还需要用JDK工具链(如javac编译辅助Java类、jar打包组件)生成中间产物,所以configure阶段必然会检查BootJDK。要符合Fedora禁止预编译二进制的规则,必须走源码自举构建路线,从最基础的开源Java编译器逐步迭代出完整JDK。

可行的自举构建步骤

1. 用GCJ构建初始基础JDK

GCJ是GNU套件中的Java编译器,属于gcc生态,可从源码编译安装(符合Fedora规则),能用来构建OpenJDK的早期版本作为初始BootJDK:

  • 安装依赖:
    dnf install gcj gcj-devel gcc-c++ make autoconf libX11-devel libXext-devel libXrender-devel libXtst-devel libXt-devel cups-devel fontconfig-devel alsa-lib-devel
    
  • 构建OpenJDK 6(作为第一级BootJDK):
    git clone https://github.com/openjdk/jdk6.git
    cd jdk6
    ./configure --with-gcj --disable-debug --disable-dependency-tracking
    make all
    export BOOTJDK=$(pwd)/build/*/jdk
    

2. 迭代构建更高版本JDK

用初始BootJDK逐步升级,直到目标版本:

  • 用OpenJDK 6构建OpenJDK 8:
    cd ..
    git clone https://github.com/openjdk/jdk8.git
    cd jdk8
    ./configure --with-boot-jdk=$BOOTJDK --disable-debug --disable-dependency-tracking
    make all
    export BOOTJDK=$(pwd)/build/*/jdk
    
  • 用OpenJDK 8构建目标版本(如OpenJDK 17):
    cd ..
    git clone https://github.com/openjdk/jdk17.git
    cd jdk17
    ./configure --with-boot-jdk=$BOOTJDK --disable-debug --disable-dependency-tracking --with-jvm-variants=server
    make all
    

关键说明

  • 不同OpenJDK版本的configure参数存在差异,需参考对应版本的BUILDING.md调整
  • RHEL 9默认仓库可能不含gcj,需启用codeready-builder仓库,或从gcc源码编译gcj以严格遵循规则
  • Fedora官方的OpenJDK包正是采用这种自举模式,完全符合禁止预编译二进制的打包规范

内容的提问来源于stack exchange,提问作者Semyon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:54:58