Hi,
I am new to LLVM and Clang. I am trying to set up Clang on my system. I
am currently running it on Ubuntu 10.04 which is loaded on a VM.
After Installation I tried running a small code to check if it works
this is my code
#include <iostream>
#include <llvm/Support/raw_ostream.h>
#include <clang/Basic/Diagnostic.h>
#include <clang/Basic/TargetInfo.h>
#include <clang/Basic/FileManager.h>
#include <clang/Lex/Preprocessor.h>
#include <clang/Lex/HeaderSearch.h>
#include <clang/Frontend/TextDiagnosticPrinter.h>
#include <clang/Frontend/DiagnosticOptions.h>
using namespace clang;
int main()
{
llvm::raw_stdout_ostream ost;
DiagnosticOptions dops;
TextDiagnosticPrinter tdp(ost,dops);
return 0;
}
when I run this bit of code using
g++ tut1.cpp -g -fno-rtti `llvm-config --cxxflags --ldflags --libs`
-L/usr/local/lib -lclangBasic -lclangLex -lclangDriver -lclangFrontend
-lclangParse -lclangAST -lclangSema -lclangAnalysis
this is the output that I get
fla@ubuntu:~/Desktop/Clang$ g++ tut1.cpp -g -fno-rtti `llvm-config
--cxxflags --ldflags --libs` -L/usr/local/lib -lclangBasic -lclangLex
-lclangDriver -lclangFrontend -lclangParse -lclangAST -lclangSema
-lclangAnalysis
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`~TextDiagnosticPrinter':
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:53:
undefined reference to `clang::DiagnosticClient::~DiagnosticClient()'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:53:
undefined reference to `clang::DiagnosticClient::~DiagnosticClient()'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:53:
undefined reference to `clang::DiagnosticClient::~DiagnosticClient()'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`clang::TextDiagnosticPrinter::PrintIncludeStack(clang::SourceLocation,
clang::SourceManager const&)':
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:59:
undefined reference to
`clang::SourceManager::getPresumedLoc(clang::SourceLocation) const'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`clang::TextDiagnosticPrinter::HighlightRange(clang::CharSourceRange
const&, clang::SourceManager const&, unsigned int, clang::FileID,
std::basic_string<char, std::char_traits<char>, std::allocator<char> >&,
std::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&)':
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:91:
undefined reference to
`clang::SourceManager::getInstantiationRange(clang::SourceLocation) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:93:
undefined reference to
`clang::SourceManager::getInstantiationLineNumber(clang::SourceLocation,
bool*) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:97:
undefined reference to
`clang::SourceManager::getInstantiationLineNumber(clang::SourceLocation,
bool*) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:104:
undefined reference to
`clang::SourceManager::getInstantiationColumnNumber(clang::SourceLocation,
bool*) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:111:
undefined reference to
`clang::SourceManager::getInstantiationColumnNumber(clang::SourceLocation,
bool*) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:118:
undefined reference to
`clang::Lexer::MeasureTokenLength(clang::SourceLocation,
clang::SourceManager const&, clang::LangOptions const&)'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`clang::TextDiagnosticPrinter::EmitCaretDiagnostic(clang::SourceLocation, clang::CharSourceRange*,
unsigned int, clang::SourceManager const&, clang::FixItHint const*,
unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)':
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:310:
undefined reference to
`clang::SourceManager::getImmediateInstantiationRange(clang::SourceLocation)
const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:316:
undefined reference to
`clang::SourceManager::getImmediateSpellingLoc(clang::SourceLocation) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:323:
undefined reference to
`clang::SourceManager::getImmediateSpellingLoc(clang::SourceLocation) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:325:
undefined reference to
`clang::SourceManager::getImmediateSpellingLoc(clang::SourceLocation) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:330:
undefined reference to
`clang::SourceManager::getPresumedLoc(clang::SourceLocation) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:370:
undefined reference to
`clang::SourceManager::getBufferData(clang::FileID, bool*) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:374:
undefined reference to
`clang::SourceManager::getColumnNumber(clang::FileID, unsigned int,
bool*) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:376:
undefined reference to
`clang::Lexer::MeasureTokenLength(clang::SourceLocation,
clang::SourceManager const&, clang::LangOptions const&)'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:403:
undefined reference to
`clang::SourceManager::getLineNumber(clang::FileID, unsigned int, bool*)
const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:455:
undefined reference to
`clang::SourceManager::getLineNumber(clang::FileID, unsigned int, bool*)
const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:455:
undefined reference to
`clang::SourceManager::getLineNumber(clang::FileID, unsigned int, bool*)
const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:460:
undefined reference to
`clang::SourceManager::getColumnNumber(clang::FileID, unsigned int,
bool*) const'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`clang::TextDiagnosticPrinter::HandleDiagnostic(clang::Diagnostic::Level, clang::DiagnosticInfo
const&)':
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:730:
undefined reference to
`clang::SourceManager::getPresumedLoc(clang::SourceLocation) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:776:
undefined reference to
`clang::SourceManager::getInstantiationRange(clang::SourceLocation) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:789:
undefined reference to
`clang::Lexer::MeasureTokenLength(clang::SourceLocation,
clang::SourceManager const&, clang::LangOptions const&)'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:794:
undefined reference to
`clang::SourceManager::getColumnNumber(clang::FileID, unsigned int,
bool*) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:794:
undefined reference to
`clang::SourceManager::getLineNumber(clang::FileID, unsigned int, bool*)
const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:794:
undefined reference to
`clang::SourceManager::getColumnNumber(clang::FileID, unsigned int,
bool*) const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:794:
undefined reference to
`clang::SourceManager::getLineNumber(clang::FileID, unsigned int, bool*)
const'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`.L498':
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:830:
undefined reference to
`clang::DiagnosticInfo::FormatDiagnostic(llvm::SmallVectorImpl<char>&)
const'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:834:
undefined reference to
`clang::Diagnostic::getWarningOptionForDiag(unsigned int)'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:843:
undefined reference to
`clang::Diagnostic::isBuiltinExtensionDiag(unsigned int, bool&)'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:852:
undefined reference to
`clang::Diagnostic::getCategoryNumberForDiag(unsigned int)'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:870:
undefined reference to
`clang::Diagnostic::getCategoryNameFromID(unsigned int)'
/home/fla/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:939:
undefined reference to
`clang::SourceManager::getImmediateInstantiationRange(clang::SourceLocation)
const'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`clang::SourceManager::getFileID(clang::SourceLocation) const':
/home/fla/llvm/tools/clang/lib/Frontend/../../include/clang/Basic/SourceManager.h:571:
undefined reference to `clang::SourceManager::getFileIDSlow(unsigned
int) const'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`clang::SourceManager::getInstantiationLoc(clang::SourceLocation) const':
/home/fla/llvm/tools/clang/lib/Frontend/../../include/clang/Basic/SourceManager.h:589:
undefined reference to
`clang::SourceManager::getInstantiationLocSlowCase(clang::SourceLocation) const'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`clang::SourceManager::getDecomposedInstantiationLoc(clang::SourceLocation)
const':
/home/fla/llvm/tools/clang/lib/Frontend/../../include/clang/Basic/SourceManager.h:639:
undefined reference to
`clang::SourceManager::getDecomposedInstantiationLocSlowCase(clang::SrcMgr::SLocEntry
const*, unsigned int) const'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o): In function
`DiagnosticClient':
/home/fla/llvm/tools/clang/lib/Frontend/../../include/clang/Basic/Diagnostic.h:976:
undefined reference to `vtable for clang::DiagnosticClient'
/usr/local/lib/libclangFrontend.a(TextDiagnosticPrinter.o):(.data.rel.ro._ZTVN5clang21TextDiagnosticPrinterE[vtable
for clang::TextDiagnosticPrinter]+0x18): undefined reference to
`clang::DiagnosticClient::IncludeInDiagnosticCounts() const'
collect2: ld returned 1 exit status
Their seems to definitely be some issue regarding linking of the libraries
and the steps used for installation were
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd .. (back to llvm)
./configure
make
(tried make install also)
Could someone help me out with what could be the root cause of this
problem and the possible solution.
Thanks,
Shashank