关闭

llvm初步涉猎

标签: llvmc++
82人阅读 评论(0) 收藏 举报
分类:

首先是要安装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'

如果是的话,恭喜你;

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



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:502次
    • 积分:25
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档