2012-08-27 30 views
1

我觉得我在这里错过了很简单的东西。我想玩叮当声,所以作为起点,我遵循this video, around 3:40中的代码示例。代码如下:连接叮当时的错误

#include "clang-c/Index.h" // Note: These two lines were 
#include <stdio.h>   // omitted from the video slides 
int main(int argc, char *argv[]) 
{ 
    CXIndex Index = clang_createIndex(0, 0); 
    CXTranslationUnit TU = clang_parseTranslationUnit(Index, 0, argv, argc, 0, 0, CXTranslationUnit_None); 
    for (unsigned I = 0, N = clang_getNumDiagnostics(TU); I != N; ++I) 
    { 
     CXDiagnostic Diag = clang_getDiagnostic(TU, I); 
     CXString String = clang_formatDiagnostic(Diag, clang_defaultDiagnosticDisplayOptions()); 
     fprintf(stderr, "%s\n", clang_getCString(String)); 
     clang_disposeString(String); 
    } 
    clang_disposeTranslationUnit(TU); 
    clang_disposeIndex(Index); 
    return 0; 
} 

在视频中,他不说,他被省略两个#include指令。我想我在上面的示例中正确填写了这些内容。他也忽略了文件的编译和链接方式,这是我遇到的问题。按照说明here我检出并编译了clang和llvm。这些文件被检出到~/src/llvm,然后从~/src/build编译(正如说明所述),现在我正在试着在~/src/test上面做一个简单的测试项目。以下是我如何调用gcc和输出。

gcc -I../llvm/tools/clang/include/ -L../build/Debug+Asserts/lib/ -lclang main.cpp -o test 
/tmp/ccrpABsq.o: In function `main': 
main.cpp:(.text+0x24): undefined reference to `clang_createIndex' 
main.cpp:(.text+0x5f): undefined reference to `clang_parseTranslationUnit' 
main.cpp:(.text+0x74): undefined reference to `clang_getNumDiagnostics' 
main.cpp:(.text+0x8b): undefined reference to `clang_getDiagnostic' 
main.cpp:(.text+0x93): undefined reference to `clang_defaultDiagnosticDisplayOptions' 
main.cpp:(.text+0xab): undefined reference to `clang_formatDiagnostic' 
main.cpp:(.text+0xc0): undefined reference to `clang_getCString' 
main.cpp:(.text+0xed): undefined reference to `clang_disposeString' 
main.cpp:(.text+0x10d): undefined reference to `clang_disposeTranslationUnit' 
main.cpp:(.text+0x118): undefined reference to `clang_disposeIndex' 
collect2: ld returned 1 exit status 
make: *** [all] Error 1 

我检查~/build/Debut+Asserts/lib并且在该目录既libclang.alibclang.so。我不确定我做错了什么。我试过Google搜索,并没有找到任何提示或指示我应该链接的东西。无论如何,我尝试了一些不同的东西,似乎没有任何工作。

回答