必须安装autoconf、make、zip/unzip三类基础工具:autoconf用于生成configure脚本,make驱动构建流程,zip/unzip负责最终打包;缺一不可,否则configure无法执行或make images失败。

需要哪些基础工具才能跑通 configure + make
OpenJDK 构建不是只装个 JDK 就能开干的。它依赖一套底层构建基础设施,缺一不可。核心就三类:
-
autoconf:生成configure脚本本身(源码里只有configure.ac,没这个就根本跑不起来configure) -
make:驱动整个构建流程,所有make images、make test都靠它调度 -
zip/unzip:打包阶段必需,漏掉会导致make images在最后一步失败,报错类似zip: command not found
在 macOS 上用 brew install autoconf make zip;Linux(apt 系统)用 sudo apt-get install autoconf build-essential zip unzip;Windows 则必须用 Cygwin 或 WSL,原生 CMD/PowerShell 不支持。
configure 命令里最关键的三个参数
很多人卡在 configure 这一步,不是语法错,而是参数逻辑没理清。最常出问题的是这三个:
-
--with-boot-jdk=:必须指向一个**已安装且可用**的旧版 JDK(比如编译 JDK 21 就得用 JDK 17 或 20)。路径里不能有空格,也不能是软链接——直接写/home/user/jdk-20.0.2这种硬路径 -
--disable-warnings-as-errors:OpenJDK 主线代码警告越来越多,不加这个,编译会因 warning 直接中断。新手起步必加 -
--with-jvm-variants=server:不指定的话默认可能尝试构建多个变体(server、client、minimal),浪费时间还容易失败。明确只要server即可
典型命令示例:bash configure --with-boot-jdk=/opt/jdk-20 --disable-warnings-as-errors --with-jvm-variants=server
make images 为什么总卡住或失败
make images 是最终产出 JDK 的命令,但它背后并行度高、依赖多,失败点很隐蔽:
- 默认并行数太高:不加
JOBS参数时,make可能起满 CPU 核心,内存吃紧直接 OOM。建议显式设为JOBS=4(4 核机器)或JOBS=2(8G 内存以下) - 缺少系统库:Linux 上常见缺
libxrender-dev、libxtst-dev,错误日志里会带configure: error: Cannot find required library,不是 Java 层面的问题,得回系统装包 - 路径含空格:Windows 下从 Git Bash 进入含空格目录(如
/c/Users/My Name/jdk),configure可能成功,但make中期会崩在 shell 字符串解析上,毫无提示。务必用cd /c/work/jdk这类无空格路径
构建完怎么验证 JDK 真能用
别急着改 PATH,先确认产物本身没问题。构建成功后,JDK 二进制在:build/*/images/jdk/bin/java。注意这个路径里的 * 是实际构建目录名,比如 linux-x86_64-server-release。
直接运行验证:
./build/linux-x86_64-server-release/images/jdk/bin/java -version
如果输出类似 openjdk version "21" 2023-09-19,说明构建成功。此时再考虑把该路径加入 PATH 或软链到常用位置。跳过这步直接配环境变量,出问题时连是构建失败还是配置错误都分不清。
最容易被忽略的是:构建产物里 bin/java 可执行,不代表 bin/javac 也一定可用——有些配置漏了 --enable-javac(虽然默认开启),或者 make images 没跑完全部子任务。验证时最好顺手试一句 ./build/.../jdk/bin/javac -version。











