llvm 5.0链接错误与llvm :: Module :: dump()

jac*_*cky 4 c++ llvm llvm-clang llvm-c++-api

我试图在过去的两天里将LLVM与My C++项目联系起来并且它最终正在工作,但问题是当我使用dump()方法时它会给出链接器错误我认为问题出在我正在链接的库中,所以我'我将可执行文件链接到所有LLVM库(模块)但没有成功.所以这是LLVM5.0代码库中的一个错误,或者我做错了什么以及我专门谈论LLVM5.0的原因,因为我已经在评论部分中读取了其他地方(LLVM-5.0 Makefile未定义引用失败)没有问题使用LLVM4.0编译相同的代码,当然我搜索了其他解决方案,但没有什么

llvm_test.cpp:

#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"

llvm::LLVMContext context;

int main(){
    llvm::Module*module = new llvm::Module("llvm-module",context);
    module->dump();
}
Run Code Online (Sandbox Code Playgroud)

命令:

clang++ -O3  -Wall -std=c++11 `llvm-config --cppflags --ldflags` `llvm-config --libs core --system-libs` toy.cpp 
Run Code Online (Sandbox Code Playgroud)

而且我已经链接了所有模块:

clang++ -O3 -Wall -std=c++11 `llvm-config --cxxflags --ldflags` `llvm-config --libs all --system-libs` toy.cpp 
Run Code Online (Sandbox Code Playgroud)

编译器: Apple Clang 8.0.0 x86_64

操作系统: mac OS 10.12.5

谢谢你提前帮助

gru*_*czy 10

好的,我查看了llvm的代码,你实际上可以做得更容易.您所要做的就是停止使用dump而是:

module->print(llvm::errs(), nullptr);
Run Code Online (Sandbox Code Playgroud)

这正是dump内部的作用.