2011-12-09 4 views
2

나는 명령 "gcc .. ../../*.so"를 사용하면 다음과 같은 오류 메시지가 :LLVM 라이브러리에 어떻게 링크해야합니까?

/usr/bin/ld: /home/demonwnb/build/src/*.so: error: undefined reference to 'llvm::raw_ostream::operator<<(void const*)' 
/usr/bin/ld: /home/demonwnb/build/src/*.so: error: undefined reference to 'clang::DeclarationName::printName(llvm::raw_ostream&) const' 

내가 "LLVM 라이브러리"를 연결하지 않는 것이 생각 제대로, 그래서 어떻게해야합니까이?

답변

1

g ++를 사용하여 링크를 사용해 보셨습니까? 이들은 C++ 라이브러리이며 gcc는 C++ 라이브러리를 링커에 전달하지 않습니다.

+0

감사합니다, 이제 완성을 다음 기호를 설정할 수 있습니다. – kunou

4

llvm-config 명령을 사용하여 라이브러리를로드 할 위치를 컴파일러에 알려줘야합니다.

당신은 당신의 메이크에

CC = g++ 

LLVM_MODULES = core jit native 

CPPFLAGS = `llvm-config --cppflags $(LLVM_MODULES)` 
LDFLAGS = `llvm-config --ldflags $(LLVM_MODULES)` 
LIBS = `llvm-config --libs $(LLVM_MODULES)` 

all: 
    $(CC) *.o $(LDFLAGS) $(LIBS) -o MyOutput 
main: 
    find -name '*.cpp' -print0 | xargs -0 $(CC) -c $(CPPFLAGS) 
+0

@kunou : 이것은 LLVM을 사용하는 프로젝트의 제 메이크 파일에서 추출한 것입니다. 프로젝트를 위해 약간의 조정이 필요할 수 있습니다! –

+1

LLVM은 정적 라이브러리 세트로 구축된다는 점을 언급 할 필요가 있습니다. 일부 링커는 -lLLVM * 플래그의 순서에 민감하므로 llvm-config 스크립트를 사용하는 것이 좋습니다 **. 또는 CMake를 사용하고 있다면'llvm_map_components_to_libraries()'를 사용하십시오. – arrowd

+0

고마워요! 이제 괜찮아. – kunou

관련 문제