AOT 工作流
本文描述从托管 DLL 到运行时可执行 AOT 代码的完整流程。
端到端流程
步骤 1:运行 LeanAOT
dotnet out\dotnet\LeanAOT\Release\net8.0\LeanAOT.dll ^
-d libraries\dotnetframework4.x ^
-d myapp\bin\Release ^
-a mscorlib ^
-a MyApp ^
-o myproject\generated\cpp
可选附加 --leanaot-aot-rule-file 控制哪些方法生成 AOT 代码。
何时重新运行: 托管 DLL 变更、AOT 规则变更、LeanAOT 版本升级。
步骤 2:纳入 CMake 构建
将生成目录中的 *.cpp 加入宿主目标:
file(GLOB LEANCLR_AOT_SOURCES "generated/cpp/*.cpp")
add_executable(my_app main.cpp ${LEANCLR_AOT_SOURCES})
target_link_libraries(my_app PRIVATE leanclr)
建议将生成文件放在独立目录(如 generated/cpp/),便于 .gitignore 与 CI 缓存。
确保 modules_registration.cpp 在同一目标中编译——它导出全局 g_aot_modules_data。
步骤 3:编译链接
与构建 LeanCLR 运行时相同,宿主工程需 C++11 并链接 leanclr 静态库。