我应该如何链接到LLVM库?

我应该如何链接到LLVM库?,llvm,clang,Llvm,Clang,当我使用命令“gcc..../../*.so”时,出现以下错误消息: /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::Declarat

当我使用命令“
gcc..../../*.so
”时,出现以下错误消息:

/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'

/usr/bin/ld:/home/demonwnb/build/src/*。因此:错误:未定义对“llvm::raw\u ostream::operator”的引用是否尝试使用g++进行链接?那些是C++库,GCC不把C++库传递给链接器。

< p>你需要告诉编译器从哪里加载库,这可以使用LLVM CONFIG命令来完成。 您可以在makefile中设置以下符号

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)

@kunou:这是从我的makefile中提取的一个使用LLVM的项目。您可能需要稍微调整一下,以使其适用于您的项目!值得一提的是,LLVM将自己构建为一组静态库。有些链接器对-lLLVM*标志的顺序很敏感,因此强烈建议使用llvm配置脚本。或者
llvm\u将组件映射到库()
如果您使用的是CMake@kunou如果它对您有效,您可以将其标记为正确答案!
查找
的目的是什么?@Galaxy:查找是查找所有扩展名为.cpp的文件。该列表将输入gcc进行编译。这不是绝对必要的。如果要静态列出Makefile中的文件,甚至可以执行$(CC)file1.cpp file2.cpp-c$(cppfaglass)。