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

时间:2015-01-09 15:18:28

标签: c++ linux shared-libraries llvm

我几周前在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有关? 其他人遇到了这样的问题,不管怎样在Win上使用cygwin:here

有什么想法吗? 谢谢 亚历

3 个答案:

答案 0 :(得分: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 :(得分:1)

添加到alexei的reply

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

JsonParser

答案 2 :(得分:1)

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