【问题标题】:LLVM out of source pass build: Loadable modules not supported (on Linux)LLVM out of source pass build:不支持可加载模块(在 Linux 上)
【发布时间】:2015-01-09 15:18:27
【问题描述】:

几周前,我在 debian wheezy 上编译并安装了 LLVM(配置和制作),现在尝试从源代码编译 llvm-mutate pass。 AFAICC,llvm-mutate 遵循 cmake out of source pass build instructions

尝试构建 llvm-mutate 时

mkdir build
cd build
cmake -DCMAKE_MODULE_PATH=/usr/local/share/llvm/cmake ../

我明白了:

-- 忽略变异 -- 此平台不支持可加载模块。

嗯? opt 和可加载通道(在 llvm_trunk/build/Debug+Asserts/lib/xxx.so)存在并且可以工作(使用 configure & make 编译,而不是 cmake)。

所以这个问题好像和cmake有关? 其他人也遇到过这样的问题,但是在 Win 上使用 cygwin:here

有什么想法吗? 谢谢 亚历克斯

【问题讨论】:

    标签: c++ linux shared-libraries llvm


    【解决方案1】:

    AddLLVM cmake 模块需要一些先决条件。添加到 CMakeLists.txt:

    # AddLLVM needs these
    set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
    set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib)
    
    include(HandleLLVMOptions) # important: matches compiler flags to LLVM/Clang build
    include(AddLLVM)
    

    一些灵感来自this message

    【讨论】:

      【解决方案2】:

      只是为了完整起见,如果有人会遇到此错误。此错误同时在 LLVM 3.8.0 中得到修复,因此您只需包含 AddLLVM 即可构建您的插件。 HandleLLVMOption 包含文件仅有助于获得正确的编译器标志,如上文所述。

      【讨论】:

        【解决方案3】:

        添加到 alexei 的 reply

        您也可以在CMakeLists.txt 文件中的include(AddLLVM) 行之前添加list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}"),然后在PATH 中添加llvm-config 的LLVM 二进制目录, 调用 cmake 为

        CXX=clang++ cmake -DLLVM_DIR=$(llvm-config --prefix)/share/llvm/cmake ..
        

        【讨论】:

          猜你喜欢
          • 2012-12-07
          • 1970-01-01
          • 2021-07-15
          • 1970-01-01
          • 2021-10-04
          • 1970-01-01
          • 2016-06-28
          • 2023-04-01
          • 2017-05-31
          相关资源
          最近更新 更多