<p dir="ltr">You might try building your library with -fno-rtti, or clang without it.</p>
<p dir="ltr">-- James</p>
<div class="gmail_quote">On Sep 14, 2014 9:29 AM, "Anton Smirnov" <<a href="mailto:dev@antonsmirnov.name">dev@antonsmirnov.name</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi.<div><br></div><div>I'm trying to compile reduced clang "driver.cpp" - added printf for arguments - and i'm getting linking with libLLVMSupport.a error - no StringSaver class found.</div><div><br></div><div><div># lib</div><div>echo "compiling cmd builder (x86_64) ..."</div><div>clang++ `../llvm_34_local_installed2/bin/llvm-config --cxxflags` -I ../llvm_34/tools/clang/include -I ../llvm_34_build_local2/tools/clang/include  -c ./lib_cmd_builder.cpp -o ./lib_cmd_builder_x86_64.o</div><div><br></div><div>echo "linking cmd builder (x86_64) ..."</div><div>CMD="clang++ `../llvm_34_local_installed2/bin/llvm-config --ldflags` ./lib_cmd_builder_x86_64.o -o exe_cmd_builder_x86_64 `../llvm_34_local_installed2/bin/llvm-config --libs` -lclangARCMigrate -lclangAST -lclangASTMatchers -lclangAnalysis -lclangApplyReplacements -lclangBasic -lclangCodeGen -lclangDriver -lclangDynamicASTMatchers -lclangEdit -lclangFormat -lclangFrontend -lclangFrontendTool -lclangIndex -lclangLex -lclangParse -lclangQuery -lclangRewriteCore -lclangRewriteFrontend -lclangSema -lclangSerialization -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangStaticAnalyzerFrontend -lclangTidy -lclangTidyGoogleModule -lclangTidyLLVMModule"</div></div><div><br></div><div>Error message:</div><div>







<p>Undefined symbols for architecture x86_64:</p>
<p>  "typeinfo for llvm::cl::StringSaver", referenced from:</p>
<p>      typeinfo for (anonymous namespace)::StringSetSaver in lib_cmd_builder_x86_64.o</p>
<p>ld: symbol(s) not found for architecture x86_64</p>
<p>clang: error: linker command failed with exit code 1 (use -v to see invocation)</p><p><br></p><p>Checking libLLVM is found and contains CommandLine object data:</p><p>(found on -L path):</p><p>find ../llvm_34_local_installed2/lib/ -name "*upport*"</p><p>








</p><p>../llvm_34_local_installed2/lib//libLLVMSupport.a</p><p><br></p><p>(contains CommandLine.cpp object data):</p><p>ar -t ../llvm_34_local_installed2/lib//libLLVMSupport.a | grep CommandLine</p><p>








</p><p>CommandLine.cpp.o</p><p><br></p><p>The class StringSaver is declared  in CommandLine.cpp:</p><p><br></p><p>/Users/asmirnov/Documents/dev/src/llvm_34/include/llvm/Support/CommandLine.h<br></p><p>class StringSaver {</p><p>  virtual void anchor();</p><p>public:</p><p>  virtual const char *SaveString(const char *Str) = 0;</p><p>  virtual ~StringSaver() {};  // Pacify -Wnon-virtual-dtor.</p><p>};</p><p><br></p><p>StringSaver inheritor is declared and implemented in self file (lib_cmd_builder.cpp):</p><p>namespace {</p><p>  class StringSetSaver : public llvm::cl::StringSaver {</p><p>  public:</p><p>    StringSetSaver(std::set<std::string> &Storage) : Storage(Storage) {}</p><p>    const char *SaveString(const char *Str) LLVM_OVERRIDE {</p><p>      return SaveStringInSet(Storage, Str);</p><p>    }</p><p>  private:</p><p>    std::set<std::string> &Storage;</p><p>  };</p><p>}</p><p><br></p><p>So i can't understand why i'm having this error.</p><p>Any thoughts?</p></div></div>
<br>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div>