4

我正在尝试使用 C++ 编译器来编译以下程序:

#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++ main.cpp -o main

但是,当我编译时,我收到以下编译错误:

main.cpp:2:10: fatal error: 'llvm/IR/LLVMContext.h' file not found
#include "llvm/IR/LLVMContext.h"
         ^
1 error generated.

在这种情况下,我不确定在使用 Clang 编译 main.cpp 时如何链接 LLVM API 标头。

任何帮助将不胜感激。

4

2 回答 2

2

您可以使用以下命令: g++ -std=c++11 main.cpp `llvm-config --system-libs --cppflags --ldflags --libs core` -o main

其中 --libs 和 --system-libs 标志用于链接,而 --cppflags 负责包含路径。

谢谢你

于 2018-06-05T10:49:29.903 回答
1

您需要检出或安装在系统某处的 LLVM。您可以下载二进制版本(带有可以构建的标头和库),如下所述:http: //llvm.org/releases/download.html#3.5

您还可以从其 SVN 存储库中签出 LLVM,如下所述:http: //llvm.org/docs/GettingStarted.html#checkout

一旦你这样做了,我建议查看带有 Makefiles的llvm-clang-samples存储库,显示如何构建示例程序与最新的 LLVM。

于 2014-09-21T01:59:16.473 回答