最近写编译器,要用到LLVM,记录一下在Linux下编译和安装的过程。

准备

LLVM编译器架构的前端是Clang,狭义的LLVM是指它的后端。

我们可以通过SVN来下载LLVM和Clang最新的源码。

首先如果没有安装SVN,使用如下命令安装:

sudo apt-get install subversion

下载

现在开始下载源码,如果用SVN下载失败还可以到官网直接下载压缩包,然后解压到对应的目录里。注意下载的版本。

首先进入到你想要下载LLVM的目录(以下称为myfolder_path):

cd myfolder_path

下载LLVM源码至llvm文件夹:

svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm

进入llvm/tools,下载Clang源码至clang文件夹:

cd myfolder_path/llvm/tools

svn co http://llvm.org/svn/llvm-project/cfe/trunk clang

再进入clang/tools,下载Clang-extra-Tools源码至extra文件夹:

cd myfolder_path/llvm/tools/clang/tools

svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra

回到llvm/tools,下载链接器(非必须):

cd myfolder_path/llvm/tools

svn co http://llvm.org/svn/llvm-project/lld/trunk lld

还是在这个目录,下载循环和数据优化器(非必须):

cd myfolder_path/llvm/tools

svn co http://llvm.org/svn/llvm-project/polly/trunk polly

到llvm/projects目录,下载Compiler-RT:

cd myfolder_path/llvm/projects

svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt

还有一些非必须的如Libomp, libcxx and libcxxabi和测试套件,这里不需要用到。

编译

不能在源码所在的文件夹直接编译安装,可以在myfolder_path/llvm目录下新建一个build文件夹并进入:

cd myfolder_path/llvm

mkdir build

cd build

用CMake生成Makefile,选择Release而不是Debug是为了缩短编译时间:

cmake -G "Unix Makefiles" -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_BUILD_TYPE=Release ../

编译:

cmake --build .

或者

make -j4

安装:

cmake --build . --target install

或者

make install

测试

LLVM Tutorial网站上有详细的使用LLVM实现完整编译器的教程。

可以用它的代码生成章节3.6. Full Code Listing的例程来测试是否成功安装好了所需的所有工具。

将它提供的源码toy.cpp拷贝下来,用如下命令编译:

clang++ -g -O3 toy.cpp `llvm-config --cxxflags --ldflags --system-libs --libs core` -o toy

-O3表示三级优化,注意是大写字母O不是数字0。还有使用llvm-config工具的语句是用反撇号括起来的,不是单引号。

运行:

./toy

如果出现ready>提示,则运行成功,你可以输入一段Kaleidoscope语言

编写的代码,看看结果。

llvm编译linux,下载与编译LLVM和Clang相关推荐

  1. go 跨平台编译linux,golang 跨平台编译

    只需要指定目标操作系统的平台和处理器架构即可: 命令行方式 因为不支持CGO,所以要禁用CGO SET CGO_ENABLED=0 // 禁用CGO SET GOOS=linux // 目标平台是li ...

  2. openssh编译 linux,openssh 的编译安装

    为了提升ssh的安全性,更新openssh也是很重要的. 下面开始编译安装openssh. openssh的官网:可以在这里下载最新的openssh 来安装http://www.openssh.com ...

  3. android编译脚本下载,Android编译 Fak_aac心路历程

    下载官方库 编译脚本 #!/bin/sh NDK_ROOT=/Users/momo/Library/Android/sdk/ndk-bundle ANDROID_API_VERSION=15 NDK_ ...

  4. linux下如何运行c编译,Linux下如何编译并运行C程序

    GCC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C.C++.Ada.Fortran.Objective.Perl.Python.Ruby以及Ja ...

  5. cygwin 编译linux内核,Cygwin编译ARM Linux内核

    --Cygwin配置 在d:\cygwin\cygwin.bat中加入set CYGWIN=title ntea cd /bin mv sh.exe sh-original.exe ln –s bas ...

  6. v8 编译 linux,安装与编译 Javascript V8 Engine

    安装 gclient gclient 是一个可以同时支援 SVN 与 GIT 的工具,因为编辑 V8 Engine 时,必须用到这个小工具,所以我们得先安装它,安装的方式如下: 安装好后,输入 gcl ...

  7. vs2010 编译linux,VS2010 Boost编译安装

    2.解压缩到D:\boost 目录下 3.编译bjam (1)从vs2010的工具菜单进入命令提示窗口(单击"开始"按钮,指向"所有程序",指向"Mi ...

  8. Linux一键编译,linux下一键编译安装MariaDB10.0.12

    虽然网上有很多的lnmp一键安装包,可以直接安装集成环境. 但是有时候我们需要单独的安装mariadb,则可以使用下面的脚本来安装. # 一键CMAKE编译安装mariadb-10.0.12 # 安装 ...

  9. linux 模块化编译,linux里模块编译的问题

    我想试一下使用往netfliter上某个hook点装个钩子函数上去,然后在网上找了一下相关的文章,然后把网上的代码大致改了一下,如下: #include #include #include #incl ...

最新文章

  1. git使用的详细过程
  2. 获取两个数百分比的值
  3. centos 6.5 安装mysql 5.6.35–libc.so.6(GLIBC_2.14)(64bit),libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
  4. 【CTR模型】TensorFlow2.0 的 xDeepFM 实现与实战(附代码+数据)
  5. HTML代码transform,html-transform+onmouseover代码实例
  6. 对Spring Boot还陌生吗?
  7. iOS工程开发笔记二
  8. Android 动态显示和隐藏软键盘
  9. 迅捷PDF虚拟打印机怎么打印成pdf文件
  10. 郭天祥的10天学会51单片机_第九节
  11. School Regional Team Contest, Saratov, 2011-F. Spiders-求树直径
  12. MAC上自定义Office word快捷键
  13. 为什么显示服务器升级中,手机老是显示服务器升级中
  14. 5G-NR非连续接收DRX参数配置详解
  15. 人大金仓再次荣获“国家鼓励的重点软件企业”认定
  16. 十秒钟入门一分钟搭建Discuz论坛
  17. 登陆QQ时总显示QQ安全防护进程,而且点了确定后QQ还是登不上
  18. 小司机带你学习单例模式的六种姿势!
  19. 5.3 卷积神经网络整体架构
  20. 【Altium designer】走线、线条绘制多边形如何切换直角 / 45度 / 圆弧

热门文章

  1. 【前端】小程序日历控件分享
  2. 批量删除VC,VS临时文件
  3. 光学系统常用光学参数的测量
  4. 码农晒出一段代码:500行代码没有一字注释,这种情况怎么应对?
  5. 七款小程序测评,让你知道它为什么还不能取代app
  6. 【Umi】通过配置 dynamicImport loadingComponent 实现加载效果
  7. chatgpt赋能python:Python与数学:让计算更简便
  8. 吴导的剑雨其实是一部考证的电影
  9. python如何对excel批量加密_Python无所不能,真是如此!看它是如何给excel表格批量加密的!-站长资讯中心...
  10. 宏基微型计算机机箱怎么打开,电脑机箱怎么打开