<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>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. </div><div>The tutorial's makefile is simple like this:</div><div><br></div><div>    CLANG_LEVEL := ../..</div><div>    LIBRARYNAME = PluginExample</div><div> </div><div>    SOURCES := PluginExample.cpp</div><div> </div><div>    LINK_LIBS_IN_SHARED = 0</div><div>    SHARED_LIBRARY = 1</div><div> </div><div>    include $(CLANG_LEVEL)/Makefile</div><div><br></div><div>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?</div><div><br></div><div>=========================================================================</div><div>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:</div><div><br></div><div>    CXX := g++</div><div>    LLVM_DIR := /usr/lib/llvm-3.5</div><div>    LLVMCONFIG := /usr/lib/llvm-3.5/bin/llvm-config</div><div>    PLUGIN = ParameterNameChecker</div><div>    </div><div>    CXXFLAGS += `${LLVM_DIR}/bin/llvm-config --cxxflags`</div><div>    LDFLAGS += `${LLVM_DIR}/bin/llvm-config --ldflags`</div><div>    LLVMLIBS = `${LLVM_DIR}/bin/llvm-config --libs`</div><div>    </div><div>    SOURCES = PluginExample.cpp</div><div>    OBJECTS = $(SOURCES:.cpp=.o)</div><div>    EXES = $(OBJECTS:.o=)</div><div>    </div><div>    CLANGLIBS = \</div><div>    <span class="Apple-tab-span" style="white-space:pre">                             </span>-lclangTooling\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                                </span>-lclangFrontendTool\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                           </span>-lclangFrontend\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                               </span>-lclangDriver\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                         </span>-lclangSerialization\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                          </span>-lclangCodeGen\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                                </span>-lclangParse\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                          </span>-lclangSema\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                           </span>-lclangStaticAnalyzerFrontend\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                         </span>-lclangStaticAnalyzerCheckers\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                         </span>-lclangStaticAnalyzerCore\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                             </span>-lclangAnalysis\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                               </span>-lclangARCMigrate\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                             </span>-lclangRewriteFrontend\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                                </span>-lclangRewriteCore\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                            </span>-lclangEdit\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                           </span>-lclangAST\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                            </span>-lclangLex\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                            </span>-lclangBasic\</div><div>    <span class="Apple-tab-span" style="white-space:pre">                          </span>$(shell $(LLVMCONFIG) --libs)\</div><div>                    -lcurses</div><div>    </div><div>    $(PLUGIN).so: $(PLUGIN).o</div><div>    <span class="Apple-tab-span" style="white-space:pre">    </span>$(CXX) $(LDFLAGS) -o $(PLUGIN).so $(PLUGIN).o</div><div>    </div><div>    $(PLUGIN).o: $(PLUGIN).cpp</div><div>    <span class="Apple-tab-span" style="white-space:pre"> </span>$(CXX) $(CXXFLAGS) -c $(PLUGIN).cpp -o $(PLUGIN).o</div><div>    </div><div>    clean:</div><div>    <span class="Apple-tab-span" style="white-space:pre">        </span>-rm -fv $(PLUGIN).o $(PLUGIN).so</div><div><br></div><div>The compiler always complains sort of things like `undefined reference to 'clang::PluginASTAction::anchor()'`.</div><div><br></div><div>I'd like to provide more information if necessary. </div></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>