<div dir="ltr">In ESBMC [0], we use:<div><br></div><div><div>-lclangTooling -lclangDriver -lclangFrontend -lclangParse -lclangSerialization -lclangSema -lclangAnalysis -lclangEdit -lclangLex -lclangAST -lclangBasic -lLLVMBitReader -lLLVMCore -lLLVMOption -lLLVMMCParser -lLLVMMC -lLLVMSupport -lrt -ldl -lpthread -lz -lm</div></div><div><br></div><div>For clang, we have to manually write the libs, but for llvm we simply use llvm-config, you can check the scripts for clang's libs [1] and llvm [2].</div><div><br></div><div>~</div><div><br></div><div>But as a suggestion, I would not rely on getNameAsString, as it is deprecated for quite a while. Try changing to <b>getName().str()</b> and it should work for any C declaration (I'm not completely sure about that, though). For C++ declarations (specially constructors and destructors), I use the following method:</div><div><br></div><div><div>std::string clang_c_convertert::get_decl_name(</div><div>  const clang::NamedDecl &decl)</div><div>{</div><div>  if(const clang::IdentifierInfo *identifier = decl.getIdentifier())</div><div>    return identifier->getName().str();</div><div><br></div><div>  std::string name;</div><div>  llvm::raw_string_ostream rso(name);</div><div>  decl.printName(rso);</div><div>  return rso.str();</div><div>}</div></div><div><br></div><div>It shoudl work for any C or C++ declaration.</div><div><br></div><div>Thank you, </div><div><br></div><div>[0] <a href="https://github.com/esbmc/esbmc">https://github.com/esbmc/esbmc</a></div><div>[1] <a href="https://github.com/esbmc/esbmc/blob/master/scripts/build-aux/m4/ax_clang.m4">https://github.com/esbmc/esbmc/blob/master/scripts/build-aux/m4/ax_clang.m4</a></div><div>[2] <a href="https://github.com/esbmc/esbmc/blob/master/scripts/build-aux/m4/ax_llvm.m4">https://github.com/esbmc/esbmc/blob/master/scripts/build-aux/m4/ax_llvm.m4</a></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-07-14 15:12 GMT+01:00 folkert via cfe-users <span dir="ltr"><<a href="mailto:cfe-users@lists.llvm.org" target="_blank">cfe-users@lists.llvm.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
What is the order of the clang libraries when linking?<br>
<br>
Currently I'm doing:<br>
<br>
clang++ -fno-rtti `llvm-config --cxxflags` \<br>
        iterate.cpp \<br>
        `llvm-config --ldflags --libs --system-libs` \<br>
        -I/usr/lib/llvm-3.8/include -ggdb3 -std=c++11 -I/usr/include/llvm-3.8/llvm/Support -L/usr/lib/llvm-3.8/lib/ -L/usr/lib/gcc/x86_64-linux-gnu/5/ -I/usr/include/c++/5/ -I/usr/include/x86_64-linux-gnu/c++/5/ -I/usr/lib/llvm-3.8/include/ \<br>
        -lclangTooling -lclangFrontend -lclangDriver -lclangSerialization -lclangParse -lclangSema -lclangAnalysis -lclangEdit -lclangAST -lclangLex -lclangBasic -lLLVM -ldl<br>
<br>
but this gives me:<br>
<br>
/tmp/iterate-66d196.o: In function `getNameAsString':<br>
/usr/lib/llvm-3.8/include/clang/AST/Decl.h:184: undefined reference to `clang::DeclarationName::getAsString() const'<br>
<br>
Thanks in advance.<br>
<br>
<br>
Folkert van Heusden<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
----------------------------------------------------------------------<br>
Phone: <a href="tel:%2B31-6-41278122" value="+31641278122">+31-6-41278122</a>, PGP-key: 1F28D8AE, <a href="http://www.vanheusden.com" rel="noreferrer" target="_blank">www.vanheusden.com</a><br>
_______________________________________________<br>
cfe-users mailing list<br>
<a href="mailto:cfe-users@lists.llvm.org">cfe-users@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><br></div><div>Mikhail Ramalho.</div></div></div>
</div>