LLVM out of source pass build:不支持可加载模块(在Linux上)

问题描述 投票:7回答:3

几周前我在debian wheezy上编译并安装了LLVM(configure&make),现在尝试从源代码编译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 ../

我明白了:

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

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

所以这个问题似乎与cmake有关?其他人在使用cygwin:here时遇到了这样的问题

任何的想法?谢谢Alex

c++ linux shared-libraries llvm
3个回答
2
投票

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


1
投票

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


1
投票

添加到alexei的reply

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

CXX=clang++ cmake -DLLVM_DIR=$(llvm-config --prefix)/share/llvm/cmake ..
© www.soinside.com 2019 - 2024. All rights reserved.