最近一直时间一直在搞linux下面的llvm,由于不是特别习惯使用ubuntu,所以最近两天在window下安装llvm,采用的系统为windows7,版本为llvm最新的3.7版本,主要参考以下博客http://blog.csdn.net/dlite/article/details/18142645,但是有些稍微的不同,废话不说,具体安装步骤如下:
一、安装配置LLVM
下载并用VS编译安装LLVM,可以参考《Getting Strated with LLVM Core Libraries》这本书,下载地址为http://download.csdn.net/detail/owuyefeiying/8551331
安装LLVM本质上其实是安装很多的库文件,头文件和可执行exe文件,其他的没啥用处,为了方便大家,我直接将编译之后生成的文件夹压缩进行上传,大家直接下载就行啦,就不用上面那么多繁琐的步骤啦~,下载地址为http://download.csdn.net/detail/owuyefeiying/8551369
下载之后的llvm进行解压后,可以放在任何位置,下面我用$LLVM代替LLVM的安装目录
二、创建和配置我们的项目
1.用VS新建一个空的C++项目,添加一个main.cpp文件,用于写下面的代码。
2.在项目属性中,添加相应的LLVM目录,假设 $LLVM 为安装目录。
包含目录:$LLVM\include
库目录:$LLVM\lib。
3.在项目属性中添加C++预处理宏:
_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS
4.在链接属性中添加LLVM中的所有的库,否则有些例子通过不了:
LLVMLineEditor.lib
LLVMLTO.lib
LLVMInterpreter.lib
LLVMBitWriter.lib
LLVMMCJIT.lib
LLVMIRReader.lib
LLVMInstrumentation.lib
LLVMObjCARCOpts.lib
LLVMPasses.lib
LLVMCore.lib
LLVMScalarOpts.lib
LLVMR600CodeGen.lib
LLVMSelectionDAG.lib
LLVMSparcDesc.lib
LLVMSparcCodeGen.lib
LLVMSparcDisassembler.lib
LLVMSparcAsmPrinter.lib
LLVMSparcAsmParser.lib
LLVMPowerPCCodeGen.lib
LLVMCodeGen.lib
LLVMR600Desc.lib
LLVMR600Info.lib
LLVMMipsDesc.lib
LLVMR600AsmPrinter.lib
LLVMR600AsmParser.lib
LLVMMipsCodeGen.lib
LLVMPowerPCInfo.lib
LLVMNVPTXCodeGen.lib
LLVMPowerPCDesc.lib
LLVMPowerPCDisassembler.lib
LLVMPowerPCAsmPrinter.lib
LLVMPowerPCAsmParser.lib
LLVMNVPTXInfo.lib
LLVMNVPTXDesc.lib
LLVMMSP430CodeGen.lib
LLVMNVPTXAsmPrinter.lib
LLVMMipsInfo.lib
LLVMMipsAsmParser.lib
LLVMMSP430Desc.lib
LLVMMSP430Info.lib
LLVMMipsAsmPrinter.lib
LLVMInstCombine.lib
LLVMHexagonCodeGen.lib
LLVMHexagonDisassembler.lib
LLVMAnalysis.lib
LLVMMSP430AsmPrinter.lib
LLVMHexagonInfo.lib
LLVMARMCodeGen.lib
LLVMHexagonDesc.lib
LLVMCppBackendInfo.lib
LLVMAsmPrinter.lib
LLVMCppBackendCodeGen.lib
LLVMBitReader.lib
LLVMARMDesc.lib
LLVMARMDisassembler.lib
LLVMARMInfo.lib
LLVMAArch64CodeGen.lib
LLVMARMAsmParser.lib
LLVMARMAsmPrinter.lib
LLVMAArch64Utils.lib
LLVMAArch64Info.lib
LLVMAArch64Disassembler.lib
LLVMAArch64Desc.lib
LLVMAArch64AsmPrinter.lib
LLVMAArch64AsmParser.lib
LLVMXCoreCodeGen.lib
LLVMipo.lib
LLVMTransformUtils.lib
LLVMipa.lib
LLVMX86CodeGen.lib
LLVMX86Info.lib
LLVMXCoreInfo.lib
LLVMXCoreDisassembler.lib
LLVMMipsDisassembler.lib
LLVMXCoreDesc.lib
LLVMXCoreAsmPrinter.lib
LLVMX86Utils.lib
LLVMX86AsmParser.lib
LLVMX86Desc.lib
LLVMTarget.lib
LLVMX86Disassembler.lib
LLVMVectorize.lib
LLVMX86AsmPrinter.lib
LLVMSystemZInfo.lib
LLVMSystemZCodeGen.lib
LLVMSystemZDesc.lib
LLVMSystemZDisassembler.lib
LLVMSystemZAsmParser.lib
LLVMSystemZAsmPrinter.lib
LLVMSparcInfo.lib
LLVMDebugInfoDWARF.lib
LLVMAsmParser.lib
LLVMDebugInfoPDB.lib
LLVMExecutionEngine.lib
LLVMLinker.lib
LLVMOrcJIT.lib
LLVMRuntimeDyld.lib
LLVMObject.lib
LLVMProfileData.lib
LLVMMC.lib
LLVMMCParser.lib
LLVMOption.lib
LLVMSupport.lib
LLVMMCDisassembler.lib
LLVMTableGen.lib
5.在VS中禁用警告:
4244;4800
三、程序,我们使用官网的Kaleidoscope中的chapter4例子
#include "llvm/Analysis/Passes.h"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
#include "llvm/ExecutionEngine/MCJIT.h"
#include "llvm/ExecutionEngine/SectionMemoryManager.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Verifier.h"
#include "llvm/Support/TargetSelect.h"
#include "llvm/Transforms/Scalar.h"
#include
#include
#include
执行代码代码之后,我们可得到如下运行结果
安装成功!!!