Windows 上编译 openJDK13

本文记录在 WIndows10 上编译 openJDK13 以及遇到问题、解决的过程

准备阶段:

  • 下载 openJDK13
  • 安装 cygwin (或 msys,以 cygwin 为例)

解压、阅读 README ,提示查看 doc/building.md,得知需要以下程序

autoconf   make   zip   unzip

根据提示,安装了 cygwin (一个可以在 Windows 上使用很多 Linux 命令的程序)。另外,除了默认的软件包之外,需要手动选择 make 和 autoconf ,下图为搜索安装 autoconf 的截图。如果安装漏了,可以补充安装。双击 Skip 变为版本号,再点击 Next 即可安装

安装后,需要手动设置环境变量,将 cywin 的 bin 目录添加到 path 中,在完成后,可以在 cmd 中使用 Linux 命令。另外需要注意,在环境变量中,cywin (或msys) 需要在 PATH 中排在 C:\Windows\system32 前,如图

  • JDK12 或 13

环境变量中的 JDK 版本必须为 JDK12 或 JDK13,这里使用 JDK13 来编译 openJDK13

  • VS Studio

需要安装 Microsoft Visual Studio 如果版本低于 16.00.30319.01. 会有警告

编译:

  • 在 openJDK 根目录下,执行下列代码进行配置、检查环境
bash ./configure --disable-warnings-as-errors

如果配置成功,需要确保环境变量中 CLASSPATH 没有设定,可以通过以下命令暂时清除

set CLASSPATH=

 再执行下列命令进行编译:

make

编译过程非常漫长,实测在同一台机器上(双系统)CentOS7 系统上编译速度比 Windows10 快了太多,而且遇到的问题也相对较少。编译完成后,应该会在控制台看到如下提示,同时退出编译:

Finished building target 'default (exploded-image)' in configuration 'windows-x86_64-server-release'

来到 build\windows-x86_64-server-release 目录下,可以看到 jdk 目录,它可以作为一个完整 JDK 使用。

异常处理:

configure 阶段:

  ♦ 显示 ?? is required

查询说是命令的问题,去 make/autoconf目录下,有一个toolchain.m4,打开,找到并注释掉相关的行即可:

搜索 Try setting --with-tools-dir 根据命令找到与自己报错信息匹配的语句块中的语句,注释掉即可。,如图所示,这里注释掉条件为 xmicrosoft 语句块中的语句,因为编译时显示的是 Microsoft compiler。

  ♦ 显示 Target CPU mismatch

同上文件中,搜索 Target CPU mismatch 注释掉与自己报错信息相同的 if 语句,注意是整个 if 语句,或者 将 AC_MSG_ERROR 改成 AC_MSG_RESULT,否则之后还会因为 if 语句块为空报错,注意 if 后的条件与控制台报错的条件需要吻合

make 阶段:

  ♢ 编译阶段出现错误,可以查找 build\windows-x86_64-server-release 目录下的 build.log 可以看到编译过程中控制台输出的信息,通常这部分的错误都会在最后看到如下提示:

ERROR: Build failed for target 'default (exploded-image)' in configuration 'windows-x86_64-server-release' (exit code 2)

    ♦ 显示:语法错误:缺少“)”(在“]”的前面)...(如下图)


       
        根据错误提示,找到测试代码所在位置,将其注释掉即可。根据代码,应该是字符集上的问题


   ♦ 显示:警告被视为错误... (如图)

需要在进行 configure 时的 configure 命令后添加 --disable-warnings-as-errors 忽略警告

 

发布了11 篇原创文章 · 获赞 3 · 访问量 2934

猜你喜欢

转载自blog.csdn.net/the_first_snow/article/details/104303819