You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows构建SkeletonPass遇“Loadable modules不支持”问题求助

Windows平台构建LLVM Pass出现"Loadable modules not supported"的原因与解决方法

错误原因解析

SkeletonPass ignored -- Loadable modules not supported on this platform.
这个提示的核心问题是:LLVM在Windows平台(尤其是搭配MSVC编译的LLVM)默认不支持动态加载Pass插件。Linux上的.so动态插件机制在Windows上的实现存在限制,LLVM的AddLLVM.cmake脚本会检测平台与编译环境,当识别到Windows+MSVC组合时,会跳过动态插件的构建流程。

另外,Looking for os_signpost_interval_begin - not found是macOS专属的性能分析API,Windows下不存在属于正常警告,完全不影响核心功能,可直接忽略。


解决方法

方法一:静态链接Pass到LLVM工具(推荐,无需重新编译LLVM)

如果不想重新编译LLVM,可以将Pass编译为静态库,直接链接到opt或自定义LLVM工具中:

  1. 修改skeleton/CMakeLists.txt,替换原有的add_llvm_pass_plugin逻辑:
add_library(SkeletonPass STATIC Skeleton.cpp)
target_link_libraries(SkeletonPass PRIVATE LLVMIRReader LLVMCore LLVMAsmParser)
  1. 在根目录CMakeLists.txt中添加静态库与opt的链接逻辑:
# 定位LLVM的opt工具目标
get_target_property(OPT_EXECUTABLE opt LOCATION)
# 将Pass静态库链接到opt
target_link_libraries(opt PRIVATE SkeletonPass)

完成后编译,Pass会被直接集成到opt中,无需动态加载。

方法二:重新编译LLVM以支持Windows动态插件

如果必须使用动态插件(.dll形式加载),需要用Clang编译LLVM并开启插件支持:

  1. 下载LLVM源码,在构建目录执行CMake时添加以下关键选项:
cmake -G "Visual Studio 17 2022" -T ClangCL ^
  -DLLVM_ENABLE_PLUGINS=ON ^
  -DLLVM_BUILD_SHARED_LIBS=OFF ^
  -DLLVM_TARGETS_TO_BUILD=X86 ^
  ../llvm
  • ClangCL作为工具链:MSVC对LLVM插件机制支持有限,Clang是更适配的选择
  • LLVM_ENABLE_PLUGINS=ON:强制开启插件支持
  • LLVM_BUILD_SHARED_LIBS=OFF:编译静态LLVM库(动态库下插件支持逻辑更复杂)
  1. 完成LLVM编译后,回到你的Pass项目重新执行CMake,此时add_llvm_pass_plugin会生成.dll格式的动态插件,原错误提示会消失。
  2. 加载插件时使用命令:opt -load-plugin SkeletonPass.dll(LLVM 14+版本支持,旧版本用-load参数)

内容的提问来源于stack exchange,提问作者EUV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:06:20