llvm安装方式_LLVM安装和编译_weixin_39796140的博客-程序员秘密

技术标签: llvm安装方式  

此处以Ubuntu18.04为例

快速安装

搜索一下软件包

sudo apt search llvm

会发现有很多版本,我们安装需要的版本就行

sudo apt install llvm-6.0

sudo apt install clang-6.0

手动编译安装

单独编译llvm

llvm与clang都作为单独的组件以开源形式提供,可以单独编译它们,也可以组全在一起编译。我们先来看下,如何单独编译llvm。

注意,很多选项的介绍见文章的混合编译部分,用以提高编译效率和成功率

在http://releases.llvm.org/下载源码,然后解压

注意:编译不可以在解压后的文件夹内部编译,需要在外部新建一个文件夹,否则编译会失败!

执行以下命令,新建mybuilder目录,并进行编译配置。

mkdir mybuild

cd mybuild

cmake -G "Unix Makefiles" --enable-optimized --enable-targets=host-only ../llvm-7.0.1.src

然后再执行以下命令开始编译:

cmake --build .

注意,此处如果电脑性能好,此处可以指定多线程来编译,将上面的指令替换为如下

(建议电脑内存8G及以上)

make -j10

如果出现CMAKE_CXX_COMPILER错误,则还需要安装一下build-essential编译包,这个包里包含了众多GNU的编译工具。命令:sudo apt install build-essential

llvm和clang混合编译

首先下载llvm和clang的源码包并解压,把解压后的clang的源码包重命名,并移动到llvm-7.0.1.src/tools/目录下,最终效果为llvm-7.0.1.src/tools/clang/。

然后在build文件夹里运行命令

cmake -G "Unix Makefiles" --enable-optimized --enable-targets=host-only ../llvm-7.0.1.src

cmake -G [options]

-G是指定编译器架构/工具(generators),其中一些generators如下(即编译工具):

Unix Makefiles

Ninja

Visual Studio

Xcode

可选项options如下:

-DCMAKE_INSTALL_PREFIX=directory 明确LLVM工具和库被安装的位置,默认在/usr/local下。

-DCMAKE_BUILD_TYPE=type Debug选项,默认就是使用Debug。

-DLLVM_ENABLE_ASSERTIONS=On 编译时开启断言检查(assertion),默认就是开启

要注意整个llvm和build的绝对路径中不要出现中文,否则会出问题。

编译时最好指定下面两个选项:

--enable-optimized 打开优化,默认情况下是关闭的。这样会生成大量 debug 信息,以致于产生的文件可能高达 9.4 G 之多,这可能很快耗尽磁盘空间导致编译失败。

--enable-targets=host-only 选择目标平台,默认情况下会生成所有平台的。这里设置成 host-only 只选择本机即可。

cmake会检查编译环境,如果没有报错,直接运行make命令即可开始编译。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39796140/article/details/111951707

智能推荐

数据结构入门——预备篇_学习数据结构的预备思想_無柳先生的博客-程序员秘密

数据结构入门——预备篇指针——c语言的灵魂指针与地址指针就是地址,地址就是指针。指针变量是存放内存单元地址的变量指针的本质是一个操作受限的非负整数(操作受限:对于整数来说,可以有加减乘除取余等运算,但是对于地址来说,只有加减。)指针的定义#include<stdio.h>int main (void){ int * p; //p是个变量名字 , int * 表示该p变量只能存储int类型变量的地址 int i = 10; int j;

Android-性能优化最佳实践offer拿到手软_普通网友的博客-程序员秘密

首先,讲讲为什么我们要讲JAVA的语言进阶,从整体来讲,Java和Android的区别在于Android程序是基于组件和配置的,而且Android开发以Java语言为开发工具,表面上看他们有点同宗不同门,但实际上区别十分大,Android是一个主流智能手机操作系统,Java是一种开发语言,两者没有好坏之分,而且两者也是不同的岗位,从工作岗位来看,安卓从事的是移动互联方向,Java则是从事开发方向。Android和Java的联系Android的应用层上的应用程序是用Java编写的,以Java作为开发语言,

阿里云centos的本地连接、传输文件、部署网站_阿里云centos文件传输助手_Pursue__的博客-程序员秘密

由于我那不给力的原装系统win10家庭版,不自带安全组策略,试了很多办法都没办法远程连接上阿里云的windows桌面,所以要么换本地系统要么换服务器系统的我,选择了换服务器的系统,于是从Windows server 2012换成了centos 7.4。换成Centos之后呢,首先下一个连接工具,Xshell或者FinalShell都可以,个人比较喜欢FinalShell,看你们个人喜欢吧。...

js获取要定位元素距离浏览器顶部的距离_js获取元素距离浏览器顶部距离,为什么是0_zzsi的博客-程序员秘密

<script type="text/javascript"> $(function(){ //获取要定位元素距离浏览器顶部的距离 var navH = $("#new_left").offset().top; var y = $("#new_left").height(); console.log(y); //滚动条事件 $(window).scroll(function(){ //获取滚动条的滑动距离 var scroH = $.

音视频系列一:基础知识_加班猿的博客-程序员秘密

title: 音视频系列一:基础知识categories:[C++]tags:[音视频编程]date: 2021/07/01作者:hackett微信公众号:加班猿音视频系列一:基础知识开篇:5G时代已经开启,音视频产业会有质的飞跃,随着知识产权和版权保护数字技术发展,数字音视频会实现爆发式增长,未来会形成一个全域的音视频服务生态,由于各方面需要音视频相关知识,于是决定开一个音视频系列的坑,接下来会一期一期地慢慢填。一、音视频录制概念二、音视频播放原理三、图像表示概念1.

Flir Blackfly S 工业相机 介绍_flie blackfly s工业相机_月照银海似蛟龙的博客-程序员秘密

Flir Blackfly 官网:网址Blackfly S 采用业内先进的冰块外形传感器。具有强大功能,可以轻松生成所需的精确图像,并加速应用程序开发。包括对图像捕获和相机预处理的自动和精确手动控制。Blackfly S 提供GigE、USB3、套装和板级版本。精确图像 索尼CMOS传感器中的选择包括:全局快门、偏振和高灵敏度BSI传感器。实物图如下:Flir Blackfly S系列有众多型号,主要是像素值、显示帧频和使用传感器的不同下面以型号为:BFS-U3-123S6C-C: 12.3

随便推点

棋盘里的数字(dfs)_yinghui970828的博客-程序员秘密

棋盘里的数学发布时间: 2016年9月13日 20:39   最后更新: 2016年9月20日 12:04   时间限制: 1000ms   内存限制: 128M描述lhcoder有一个n行m列的棋盘,有一颗棋子从左上角(1,1)开始移动,每次只能往右或者往下移动一格,到右下角(n,m)一共有多少移动方案?输入有多组测试数据,每组测试数据中有

最长递增子序列——解题报告_最长递增子序列报告_bigface1234fdfg的博客-程序员秘密

最长递增子序列——解题报告        题目描述:给定一个数组,长度为n,求出其中最长递增子序列。    分析:这题可以用动态规划求解,遍历i = 1 : n,当第i个数比前面j数大,而且前面的子序列长度加1之后,比现在的第i个子序列长的话,那么就变换。额,晦涩难懂额。。看代码可以好一些。    代码如下:#includeusing namespace std;

python3.6,numpy,matplotlib,scipy,sklearn匹配版本安装-程序员秘密

先安装numpy,再安装scipy,再安装matplotlib这三个都是python3.6对应的版本。比较唯一,sk-learn 官网没有展示与python3.6对应的版本,但是使用清华源安装,可以安装到对应的版本。

主流车品牌魅力指数榜别克、东风日产、一汽丰田列前三_美通社的博客-程序员秘密

全球领先的消费者洞察与市场研究机构 J.D. Power(君迪)发布的2020中国汽车性能、运行和设计研究SM(APEAL,亦称汽车魅力指数研究)显示,虽然汽车厂商不断推出改款车型和新车...

linux查找以root开头的行,14个grep命令使用例子_号三的博客-程序员秘密

所有的类linux系统都会提供一个名为grep(global regular expression print,全局正则表达式输出)的搜索工具。grep命令在对一个或多个文件的内容进行基于模式的搜索的情况下是非常有用的。模式可以是单个字符、多个字符、单个单词、或者是一个句子。当命令匹配到执行命令时指定的模式时,grep会将包含模式的一行输出,但是并不对原文件内容进行修改。在本文中,我们将会讨论到1...

推荐文章

热门文章

相关标签