朱军
2015-Jul-15 08:14 UTC
[LLVMdev] How to write Clang plugin Makefile with binary download LLVM and Clang?
Hi! I'am new to LLVM and Clang. I just followed this [tutorial](https://kevinaboos.wordpress.com/2013/07/29/clang-tutorial-part-iii-plugin-example/) and tried to build a Clang plugin on my PC. The tutorial's makefile is simple like this: CLANG_LEVEL := ../.. LIBRARYNAME = PluginExample SOURCES := PluginExample.cpp LINK_LIBS_IN_SHARED = 0 SHARED_LIBRARY = 1 include $(CLANG_LEVEL)/Makefile However, this tutorial's LLVM and Clang is built by compiling the source, while I get LLVM(and Clang) binary online directly(with apt-get install on Ubuntu). It's installed in /usr/lib. So, I'm confused where my CLANG_LEVEL is, what does it exactly mean? ========================================================================I have tried another way, but it seems to be wrong and I have no idea what did I miss. So, the makefile is like this: CXX := g++ LLVM_DIR := /usr/lib/llvm-3.5 LLVMCONFIG := /usr/lib/llvm-3.5/bin/llvm-config PLUGIN = ParameterNameChecker CXXFLAGS += `${LLVM_DIR}/bin/llvm-config --cxxflags` LDFLAGS += `${LLVM_DIR}/bin/llvm-config --ldflags` LLVMLIBS = `${LLVM_DIR}/bin/llvm-config --libs` SOURCES = PluginExample.cpp OBJECTS = $(SOURCES:.cpp=.o) EXES = $(OBJECTS:.o=) CLANGLIBS = \ -lclangTooling\ -lclangFrontendTool\ -lclangFrontend\ -lclangDriver\ -lclangSerialization\ -lclangCodeGen\ -lclangParse\ -lclangSema\ -lclangStaticAnalyzerFrontend\ -lclangStaticAnalyzerCheckers\ -lclangStaticAnalyzerCore\ -lclangAnalysis\ -lclangARCMigrate\ -lclangRewriteFrontend\ -lclangRewriteCore\ -lclangEdit\ -lclangAST\ -lclangLex\ -lclangBasic\ $(shell $(LLVMCONFIG) --libs)\ -lcurses $(PLUGIN).so: $(PLUGIN).o $(CXX) $(LDFLAGS) -o $(PLUGIN).so $(PLUGIN).o $(PLUGIN).o: $(PLUGIN).cpp $(CXX) $(CXXFLAGS) -c $(PLUGIN).cpp -o $(PLUGIN).o clean: -rm -fv $(PLUGIN).o $(PLUGIN).so The compiler always complains sort of things like `undefined reference to 'clang::PluginASTAction::anchor()'`. I'd like to provide more information if necessary. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150715/56044bc4/attachment.html>