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

Windows下CLion使用CMake构建时链接器无法找到LLVM库报错

问题背景
  • 参照CLion官方Clang配置教程完成了最新版CLion + MSYS Clang工具链的配置,同时参照LLVM官方Windows编译文档自行编译构建了LLVM环境。
  • 项目CMakeLists.txt配置如下:
project(SimpleProject)

set(LLVM_DIR D://LLVM/build/lib/cmake/llvm)
find_package(LLVM REQUIRED CONFIG)

message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

include_directories(${LLVM_INCLUDE_DIRS})
separate_arguments(LLVM_DEFINITIONS_LIST NATIVE_COMMAND ${LLVM_DEFINITIONS})
add_definitions(${LLVM_DEFINITIONS_LIST})

add_executable(simple-tool main.cpp)

llvm_map_components_to_libnames(llvm_libs support core irreader)

target_link_libraries(simple-tool ${llvm_libs})
  • 运行LLVM Fibonacci示例程序时触发链接报错,报错信息如下:
ld.lld: error: undefined symbol: llvm::User::operator new(unsigned long long)
>>> referenced by CMakeFiles/simple-tool.dir/main.cpp.obj:(main)

ld.lld: error: undefined symbol: llvm::Function::Function(llvm::FunctionType*, llvm::GlobalValue::LinkageTypes, unsigned int, llvm::Twine const&, llvm::Module*)
>>> referenced by CMakeFiles/simple-tool.dir/main.cpp.obj:(main)
  • 构建时${llvm_libs}变量展开内容为:
LLVMSupport;LLVMCore;LLVMIRReader
  • 异常现象:CLion中可以正常跳转打开上述报错提及的符号定义,但链接阶段始终无法找到对应符号的实现。
故障原因

核心原因是工具链ABI不匹配:你编译LLVM时参照的是MSVC编译流程,生成的LLVM库为MSVC ABI格式;但当前CLion使用的是MSYS Clang工具链,默认采用MinGW/GNU ABI,两者的符号修饰规则、C++标准库实现、类内存布局完全不兼容,因此即使头文件可以正常解析、符号跳转正常,链接阶段也无法匹配到对应实现。

解决方法

二选一即可修复问题:

  • 方案1:切换为MSVC工具链
    在CLion工具链设置中切换为Visual Studio自带的MSVC编译器,保证编译项目使用的MSVC版本、编译架构、编译配置(x86/x64、Debug/Release)和你之前编译LLVM时的配置完全一致,同时对齐RTTI、异常开关等编译选项,重新构建项目即可正常链接。
  • 方案2:用当前MSYS Clang工具链重编LLVM
    放弃之前用MSVC编译的LLVM包,在MSYS2环境下使用当前项目所用的Clang编译器重新编译完整LLVM工程。编译时注意对齐和项目一致的编译选项:如果项目开启了RTTI和异常,需要在LLVM的CMake配置中添加-DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_EH=ON参数。编译完成后将LLVM_DIR指向新编译产物中LLVM的cmake配置目录,重新加载CMake项目即可。

注意:LLVM默认编译配置会关闭RTTI和C++异常,如果你的项目没有主动关闭这两个特性,哪怕工具链完全一致,也会因为选项不匹配出现链接错误。

内容的提问来源于stack exchange,提问作者V. Govorov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:48:22