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

能否独立编译LLVM的FileCheck与not工具?如何修改CMakeLists.txt?

单独编译LLVM的FileCheck和not工具解决KLEE编译依赖问题

问题1:能否单独编译这两个工具?

可以。FileCheck和not是LLVM的轻量级辅助工具,仅依赖LLVM核心库(如LLVMSupport、LLVMIRParser),无需全量编译整个LLVM项目。只要系统中已安装LLVM发布版的头文件和库,就可以单独编译这两个工具。

问题2:如何编写CMakeLists.txt实现单独编译?

不需要修改LLVM原有的CMake配置,只需在单独目录中编写极简的CMakeLists.txt即可,步骤如下:

  1. 准备源码文件
    将LLVM源码目录中llvm/utils/FileCheck/FileCheck.cpp和llvm/utils/not/not.cpp复制到一个新目录(比如llvm-tools-build)。

  2. 编写CMakeLists.txt
    在上述新目录中创建CMakeLists.txt,内容如下:

    cmake_minimum_required(VERSION 3.13.4)
    
    # 查找系统中已安装的LLVM
    find_package(LLVM REQUIRED CONFIG)
    
    # 引入LLVM的编译参数和头文件路径
    include_directories(${LLVM_INCLUDE_DIRS})
    add_definitions(${LLVM_DEFINITIONS})
    
    # 编译FileCheck
    add_executable(FileCheck FileCheck.cpp)
    target_link_libraries(FileCheck PRIVATE LLVMSupport LLVMIRParser)
    
    # 编译not工具
    add_executable(not not.cpp)
    target_link_libraries(not PRIVATE LLVMSupport)
    
    # 可选:将生成的可执行文件输出到LLVM的bin目录
    set_target_properties(FileCheck not PROPERTIES
        RUNTIME_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/bin
    )
    
  3. 编译步骤

    • 创建编译目录并进入:
      mkdir build && cd build
      
    • 配置CMake(替换/path/to/llvm/lib/cmake/llvm为你实际的LLVM配置文件路径):
      cmake .. -DLLVM_DIR=/path/to/llvm/lib/cmake/llvm
      
    • 编译(-j后接CPU核心数加速编译):
      make -j$(nproc)
      

注意事项

  • 确保LLVM发布版的版本与你下载的llvm-project源码版本完全一致,避免头文件/库版本不兼容导致编译错误。
  • 若出现链接错误,可通过llvm-config --libs support irparser命令查看当前LLVM版本需要链接的具体库名,调整target_link_libraries中的依赖项。
  • 编译完成后,可将生成的FileCheck和not复制到${LLVM_DIR}/bin目录,或在编译KLEE时通过-DFileCheck_EXECUTABLE=/path/to/FileCheck和-Dnot_EXECUTABLE=/path/to/not指定工具路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:15:48