use*_*587 2 c++ linux makefile llvm clang
我是Linux的新手,并且正在学习一些clang教程.但是,我发现即使是一个简单的文件也很难编译.所以,这是代码的一部分:
#include <cstdio>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <utility>
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/FileManager.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetOptions.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Parse/ParseAST.h"
#include "clang/Rewrite/Core/Rewriter.h"
#include "clang/Rewrite/Frontend/Rewriters.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/raw_ostream.h"
using namespace clang;
using namespace std;
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下命令编译简单代码(比如说PrintFunctions.cpp)时:
clang++ -o PrintFunctions PrintFunctions.cpp
Run Code Online (Sandbox Code Playgroud)
我收到错误:
致命错误:找不到'clang/AST/ASTConsumer.h'文件
好吧,我已经检查过我的LLVM和clang已经安装好了,文件'clang/AST/ASTConsumer.h'是在
/usr/lib/llvm-3.4/include/clang/AST
所以,必须有一些我错过的命令.我不知道该怎么做......我已经在线阅读了一些教程,其中大多数使用了makefile,它们看起来很复杂.那么,如何编译呢?如何找到一种更简单的方法来编写makefile?
顺便说一下,我在Ubuntu 14.04下,而clang/LLVM版本是3.4.
通常,在makefile中,您应该具有以下内容:
CXXFLAGS += `${LLVM_DIR}/bin/llvm-config --cxxflags`
Run Code Online (Sandbox Code Playgroud)
和
LDFLAGS += `${LLVM_DIR}/bin/llvm-config --ldflags`
LLVMLIBS = `${LLVM_DIR}/bin/llvm-config --libs`
Run Code Online (Sandbox Code Playgroud)
[根据托马斯的评论编辑]
您可能还会使用:
LLVMLIBS += `${LLVM_DIR}/bin/llvm-config --system-libs`
Run Code Online (Sandbox Code Playgroud)
对于那些不属于LLVM但LLVM依赖的东西.
[结束编辑]
然后使用这些:
.cpp.o:
${CXX} ${CXXFLAGS} ${CXX_EXTRA} -c -o $@ $<
myprog: ${OBJECTS}
${LD} ${LDFLAGS} -o $@ ${OBJECTS} ${LIBS}
Run Code Online (Sandbox Code Playgroud)
(${OBJECTS}目标文件列表在哪里)
LLVM_DIR当然应该设置为指向安装LLVM的位置,例如,/usr/或者/usr/local- 运行which clang++以查看clang安装的位置.
这是我的Pascal编译器的Makefile,使用LLVM作为后端.
| 归档时间: |
|
| 查看次数: |
1617 次 |
| 最近记录: |