2015-01-09 29 views
6

几周前我从debian喘息状态编译并安装LLVM(配置& make),现在尝试从源代码中编译llvm-mutate pass。 AFAICC,llvm-mutate遵循cmake out of source pass build instructionsLLVM超出源代码构建:不支持可加载模块(在Linux上)

当试图建立LLVM-变异

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

我得到:

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

hmm? opt和可加载的通行证(在llvm_trunk/build/Debug + Asserts/lib/xxx.so)存在并且工作(已经使用配置& make,而不是cmake编译)。

所以这个问题似乎与cmake有关? 有人遇到过这样的问题,使用cygwin Win的方法:here

任何想法? Thx Alex

回答

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

添加到阿列克谢的reply

也在之前include(AddLLVM)行的CMakeLists.txt文件,

添加 list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")然后

在你的PATH LLVM的二进制文件目录llvm-config, 调用cmake的

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

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

相关问题