我是LLVM的新手,我正在尝试构建自己的传递。阅读有关编写LLVM Pass的文档。我试图通过在Transforms目录中添加一个目录来创建我自己的传递。但是,当我尝试创建源代码时,会出现错误“make: * 没有规则来制作目标”。
如果我想要新的传递,我是否必须重建LLVM?如果是这样,因为我在Debian VM上运行它会非常耗时,并且构建它需要大约半个小时。
如果有办法解决这个问题,请告诉我。任何建议表示赞赏。感谢。
编辑: 是的,我有makefile。我按照文档中提到的步骤操作。
# Makefile for hello pass
# Path to top level of LLVM hierarchy
LEVEL = ../../..
# Name of the library to build
LIBRARYNAME = Trial
# Make the shared library become a loadable module so the tools can
# dlopen/dlsym on the resulting library.
LOADABLE_MODULE = 1
# Include the makefile implementation stuff
include $(LEVEL)/Makefile.common
我正在尝试创建名为Trial的简单函数传递。
答案 0 :(得分:4)
如果您的llvm
中有$PATH
的正常安装,那么您可以执行以下操作,而不是像文档中提到的那样将文件放在Transforms目录中
<create basic_block_pass.cpp with pass name myPass in any location>
$ clang++ -c basic_block_pass.cpp `llvm-config --cxxflags`
$ clang++ -shared -o pass.so basic_block_pass.o `llvm-config --ldflags`
$ opt -load ./pass.so -myPass < hello.bc > /dev/null
如果您创建Makefile
来执行上述步骤,那么您就拥有了一个不错的构建系统。