我覺得我在這裏錯過了很簡單的東西。我想玩叮噹聲,所以作爲起點,我遵循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.a
和libclang.so
。我不確定我做錯了什麼。我試過Google搜索,並沒有找到任何提示或指示我應該鏈接的東西。無論如何,我嘗試了一些不同的東西,似乎沒有任何工作。
哦,上帝,我是個白癡。當你的答案出現時,我意識到了這一點。謝謝。 – Alex