2012-08-27 4 views
1

여기 아주 간단한 것을 놓친 것처럼 느껴집니다. 나는 clang으로 놀고 싶다. 그래서 시작점으로 코드 예제를 this video, around 3:40에 따라 수행했다.clang에 연결할 때 오류가 발생했습니다.

비디오에서
#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있다. 내가 뭘 잘못하고 있는지 모르겠다. 나는 주변에 인터넷 검색을 시도하고 어떤 조언이나 지침을 발견하지 못했습니다. 비용을 개의치 않고, 나는 몇 가지 다른 것들을 시도했지만 아무것도 작동하지 않는 것 같습니다.

답변

관련 문제