我已经安装llvm
并llvm-debuginfo
使用apt install
并且正在尝试编译此文件:
llvm_test.cpp
#include <stdio.h>
#include "llvm/IR/LLVMContext.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/IR/Module.h"
int main( int argc, char* argv[] )
{
if( argc < 2 )
llvm::errs() << "Expected an argument - IR file name\n";
llvm::LLVMContext &context = llvm::getGlobalContext();
llvm::SMDiagnostic err;
llvm::Module* module = llvm::ParseIRFile( argv[1], err, context );
if( !mod )
{
err.print( argv[0], errs() );
return 1;
}
return 0;
}
使用以下命令:
$ clang++ -std=c++11 llvm_test.cpp `llvm-config --system-libs --cppflags --ldflags --libs core` -o llvm_test
但似乎找不到所需的API标头。这是错误消息:
llvm_test.cpp:9:13: error: no member named 'errs' in namespace 'llvm'
llvm::errs() << "Expected an argument - IR file name\n";
~~~~~~^
llvm_test.cpp:11:39: error: no member named 'getGlobalContext' in namespace
'llvm'
llvm::LLVMContext &context = llvm::getGlobalContext();
~~~~~~^
llvm_test.cpp:13:33: error: no member named 'ParseIRFile' in namespace 'llvm'
llvm::Module* module = llvm::ParseIRFile( argv[1], err, context );
~~~~~~^
llvm_test.cpp:15:9: error: use of undeclared identifier 'mod'
if( !mod )
^
llvm_test.cpp:17:27: error: use of undeclared identifier 'errs'
err.print( argv[0], errs() );
^
5 errors generated.
如注释中所建议,在llvm-config参数中添加“ support”不会改变任何内容:相同的错误。
注意:我在Windows上使用Cygwin,我的意思是apt下的apt-cyg(类似于Cygwin的工具)。
1)错误:名称空间“ llvm”中没有名为“ errs”的成员
您必须包括: #include "llvm/Support/raw_ostream.h"
2)错误:名称空间中没有名为“ getGlobalContext”的成员
这是由于llvm 3.6之后删除了getGlobalContext。因此请使用:LLVMContext context;
并在需要时提供参考。
3)错误:命名空间“ llvm”中没有名为“ ParseIRFile”的成员
您必须包括: #include "llvm/IRReader/IRReader.h"
4)错误:使用未声明的标识符'mod'
module
在这里使用而不是mod
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句