如何在WSL环境下编译构建Windows版本的OpenJDK镜像
问题解答
为什么你编译出来是Linux版本JDK
你对官方文档的默认编译规则理解有误:官方提到的「默认编译Windows版本JDK」的前提是你在Windows原生环境下执行编译操作。你现在是在WSL的Linux子系统环境中运行编译脚本,configure脚本会自动识别当前宿主系统为Linux,默认就会生成对应Linux平台的JDK镜像,这个是正常行为。
你疑惑的boot JDK规则场景说明
官方文档要求用Windows版本JDK作为boot JDK,仅针对「在Windows原生环境编译Windows版本JDK」的场景,boot JDK的作用是给当前编译的宿主系统提供运行编译阶段Java工具的环境,和最终生成的目标JDK平台没有直接关系。
你之前尝试把WSL里的Linux版JDK替换为Windows版的操作完全没有必要,Linux环境默认无法直接运行.exe格式的Windows程序,自然会失败。
编译Windows版本JDK的两个可行方案
- 方案一(最稳妥,官方推荐):直接在Windows原生环境搭建编译链,使用MSYS2/Visual Studio配套环境执行编译,此时直接安装Windows版本的OpenJDK8作为boot JDK即可,编译流程和官方文档完全对齐,不需要额外处理兼容问题。
- 方案二(WSL交叉编译):在WSL环境执行configure时添加交叉编译参数,指定目标平台为Windows,命令参考:
这种场景下直接用你已经安装的Linux版本OpenJDK8作为boot JDK即可,不需要Windows版本的JDK。./configure --build=x86_64-unknown-linux-gnu --host=x86_64-w64-mingw32 --with-boot-jdk=/usr/lib/jvm/java-8-openjdk-amd64
内容的提问来源于stack exchange,提问作者VeryGudJavaDev
相关产品推荐
相关产品推荐

