2012-08-27 29 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搜索,並沒有找到任何提示或指示我應該鏈接的東西。無論如何,我嘗試了一些不同的東西,似乎沒有任何工作。

回答