llvm初步涉猎

原创 2016年08月30日 09:34:11

首先是要安装llvm,

本机是 Ubuntu 16.04.1 lts,

介于之前安装最新版本的llvm3.9老是出现很多问题,还有就版本更新导致内部很多函数被修改或是被抛弃。

最后选择安装llvm3.7.0版本。

1。首先从官网上下载这四个包

tip(后面的.sig是签名文件,可以忽略过去,直接下载源包)

2.  解压四个压缩包,压缩后的文件夹名字不要改动!!

test_suite包 和compeler-rt包 放在 llvm-3.7.0.src 内的 projects文件内, Clang包放在 llvm-3.7.0.src 内的 tools内,


3. 打开"终端",下载cmake, cmake_minimum_required(VERSION 2.8.4) ,但是Ubuntu16.04版本的软件库内的cmake版本肯定是够用的!

sudo apt-get install cmake


4.在 llvm-3.7.0.src 文件夹外创建个文件夹build用来存放编译文件,避免污染源代码,

mkdir build 
cd build

5.  开始编译llvm, make -j2 编译会比较消耗时间,要等至少半个多小时吧...(之前编译3.9版本,出现问题层出不穷,初学者也无法判断安装是否正确,还是选择3.7版本好点)

cmake -G "Unix Makefiles" ../llvm-3.7.0.src
make -j2

6.  make命令编译好之后,就是进入make install命令,但是这里需要用到权限问题,不然会install失败。因为默认install的路径是/usr/local/ ,需要sudo才能安装,

tip(如果后续不想要llvm,可以直接删除usr下的local文件夹就可以了。)

sudo make install

但是用IDE去编写llvm代码会出现很多问题,比如需要修改std=c++11、IDE找不到llvm的include文件夹、或编译报库内代码错误。。。这些问题,目前还没想好怎么解决。


但是,用g++编译器直接编译就可以通过,所以应该是哪里有出现在问题,需要修改参数之类的吧。


那就来验证一下安装的llvm是否能正常工作吧!

创建一个文件:toy.cpp

#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/IRBuilder.h"

int main()
{
  llvm::LLVMContext& context = llvm::getGlobalContext();
  llvm::Module* module = new llvm::Module("top", context);
  llvm::IRBuilder<> builder(context); 

  module->dump( );
}

将上面代码复制进入toy.cpp,保存文件。

用g++来编译试试看,之前我存放编译的文件夹build是在 /home/xx/ 下,这个需要自行跟进自己的路径去修改一下

g++ -o llvm-add toy.cpp `/home/xx/build/bin/llvm-config --cxxflags  --libs engine nativecodegen` -lpthread -ldl  `/home/xx/build/bin/llvm-config --ldflags`

如果OK的话,正常输出结果是:

; ModuleID = 'top'

如果是的话,恭喜你;

不是话,为你默哀,去想办法解决吧,少年、



LLVM implementing a language

  • 2015年11月25日 09:53
  • 580KB
  • 下载

编译器架构的王者LLVM——(4)简单的词法和语法分析

Lex和Yacc真是太好用了,非常方便我们构建一门语言的分析程序。今天我们就来了解一门语言的Lex和Bsion定义文件,如果制作一款合理的词法、语法分析器...

llvm写编译后端

  • 2015年10月10日 15:32
  • 881KB
  • 下载

Getting Started with LLVM Core Libraries.2014

  • 2016年11月13日 22:32
  • 3.08MB
  • 下载

七天LLVM零基础入门(Linux版本)------第三天

作者:snsn1984                第二天的任务中的LLVM IR的文档(http://llvm.org/docs/LangRef.html)对于初学者来说,看起来一定很费劲,内...
  • snsn1984
  • snsn1984
  • 2013年02月22日 09:46
  • 10653

LLVM2.8的相关文档

  • 2011年06月07日 15:43
  • 933KB
  • 下载

七天LLVM零基础入门(Linux版本)------第二天

作者:snsn1984 在第一天的时候,我们简单了解了llvm和clang。今天我们继续对LLVM进行学习。 第一步:学会如何查找LLVM的文档 LLVM的文档很多,也很全面,是开源软件中文...
  • snsn1984
  • snsn1984
  • 2013年02月21日 09:15
  • 13368
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:llvm初步涉猎
举报原因:
原因补充:

(最多只允许输入30个字)