ここで非常に単純なものが欠けているように感じます。私は clang をいじってみたいので、出発点として、このビデオの 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
ビデオでは、彼は 2 つの指令を省略したとは述べていません。上記の例では、それらを正しく入力したと思います。彼はまた、ファイルがどのようにコンパイルおよびリンクされたかを省略しています。これは、私が問題を抱えている部分です。ここの指示に従って、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