2011-12-09 5 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を使用するプロジェクトの私のmakefileからの抜粋です。あなたのプロジェクトに適したものにするためにちょっと微調整しなければならないかもしれません! –

+1

LLVMは静的ライブラリのセットとして構築されていることに言及する価値はあります。リンカの中には、-lLLVM *フラグの順序に敏感なものがあるので、llvm-configスクリプトを使用することが強く推奨されています。 CMakeを使用している場合は、 'llvm_map_components_to_libraries()'を実行してください。 – arrowd

+0

ありがとう!今は大丈夫です。 – kunou

関連する問題