我是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;
当我试图编译简单的代码(让我们说PrintFunctions.cpp)与以下命令:
clang++ -o PrintFunctions PrintFunctions.cpp
我得到的错误:
致命错误:找不到“clang / AST / ASTConsumer.h”文件
那么,我已经检查过,我的LLVM和clang已经安装好了,文件“clang / AST / ASTConsumer.h”被find
/usr/lib/llvm-3.4/include/clang/AST
所以,我必须有一些我错过的命令。 我不知道该怎么做…我已经在线阅读了一些教程,其中大部分都使用了makefile,而且看起来很复杂。 那么,如何编译呢? 如何find一个更简单的方法来编写makefile?
顺便说一下,我在Ubuntu 14.04下,而clang / LLVM版本是3.4。
通常,在你的makefile中,你应该有这样的东西:
CXXFLAGS += `${LLVM_DIR}/bin/llvm-config --cxxflags`
和
LDFLAGS += `${LLVM_DIR}/bin/llvm-config --ldflags` LLVMLIBS = `${LLVM_DIR}/bin/llvm-config --libs`
[编辑每个评论由托马斯]
你可能也会使用:
LLVMLIBS += `${LLVM_DIR}/bin/llvm-config --system-libs`
对于不属于LLVM的东西,而是LLVM依赖的东西。
[结束编辑]
然后使用这些:
.cpp.o: ${CXX} ${CXXFLAGS} ${CXX_EXTRA} -c -o $@ $< myprog: ${OBJECTS} ${LD} ${LDFLAGS} -o $@ ${OBJECTS} ${LIBS}
(其中${OBJECTS}
是您的对象文件的列表)
LLVM_DIR
当然应该设置为指向您的LLVM的安装位置,例如/usr/
或/usr/local
– 运行which clang++
来查看您的clang
的安装位置。
这里是我的Pascal编译器的Makefile ,使用LLVM作为后端。