Cmake 从LLVM源代码未定义的符号中写入LLVM传递
我正在尝试用LLVM源代码构建LLVM传递。 我已经按照上面的说明做了。 生成文件包含以下内容:Cmake 从LLVM源代码未定义的符号中写入LLVM传递,cmake,llvm,Cmake,Llvm,我正在尝试用LLVM源代码构建LLVM传递。 我已经按照上面的说明做了。 生成文件包含以下内容: cmake_minimum_required(VERSION 3.4.3) project(SimpleProject) find_package(LLVM REQUIRED CONFIG) set (CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -fno-rtti -D_GLIBCXX_USE_CXX11_ABI=0"
cmake_minimum_required(VERSION 3.4.3)
project(SimpleProject)
find_package(LLVM REQUIRED CONFIG)
set (CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -fno-rtti -D_GLIBCXX_USE_CXX11_ABI=0")
include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
add_subdirectory(testpass)
以及子目录中的Makefile:
add_library(TestPass MODULE TestPass.cpp)
pass构建完美无瑕,但当我尝试使用
sudo opt load /path/to/testpass/TestPass.so TestPass < testprogram.bc > /dev/null
我是LLVM系统的新手,在使用makefiles时总是遇到问题。如果您在运行时得到未定义的符号,那么您就忘记了链接某些内容。很可能类似于
target\u link\u库(TestPass${LLVM\u libraries})
的东西也没有做到这一点。这可能只是我忽略的一个愚蠢的错误,但我找不到任何有助于我的东西。基本上,我只有一个emtpy LLVM Pass,它什么都不做,而且生成文件和它都不起作用。你不需要add\u LLVM\u loadable\u module
而不是根据该手册add\u library
吗?根据该手册,只有当你以后想将Pass添加到LLVM源代码树时,才需要它
Error opening /path/to/testpass/TestPass.so': /path/to/testpass/TestPass.so: undefined symbol: _ZNK4llvm10ModulePass17createPrinterPassERNS_11raw_ostreamERKSs
-load request ignored.