下载安装 GraalVM

官网下载 GraalVM 社区版,下载后解压到某个目录中

环境变量添加 GRAALVM_HOME ,值为刚才解压的目录。环境变量 Path 中添加 %GRAALVM_HOME%/bin.。

安装 GraalVM 插件 gu.cmd install native-image,如果出现了下载超时,可以手动在 GitHub 上下载对应平台的 jar,例如打开下载页面

20211226165450

执行 gu.cmd -L install native-image-installable-svm-java17-windows-amd64-21.3.0.jar

查看已安装的组件 gu.cmd list

下载安装平台编译器

因为 GraalVM 可以编译到指定平台的机器码,所以需要下载该平台的编译工具。Windows 系统下载Microsoft C++生成工具

20211226164229

配置环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MSVC
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.29.30133

WK10_INCLUDE
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0

WK10_LIB
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0

INCLUDE
%WK10_INCLUDE%\ucrt;%WK10_INCLUDE%\um;%WK10_INCLUDE%\shared;%MSVC%\include;

LIB
%WK10_LIB%\um\x64;%WK10_LIB%\ucrt\x64;%MSVC%\lib\x64;

Path下新增
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64

编译机器码

如果配置了上述的环境变量,忽略以下操作。

不管是 spring native 或 fat jar,想要编译为 windows 机器码,必须先通过 x64 Native Tools Command Prompt 打开命令行,通过此命令行才能正常进行编译。

如果你的代码在 D 盘,而 Microsoft C++生成工具安装在了 C 盘,你会发现通过 x64 Native Tools Command Prompt 打开的命令行无法 cd 到 D 盘,一个变通方案是在项目根目录创建 build.sh,直接在命令行中执行此脚本

1
2
3
4
5
// build.sh

PROJECT_ROOT=$(dirname "$0");
cd $PROJECT_ROOT;
// compile command here...

20211226170914