Centos7 源码安装 Clang-程序员宅基地

技术标签: 运维  c/c++  

安装CMake

必须是3.4.3以上版本,直接下载二进制设置到PATH环境变量就可以了

 

安装编译依赖

yum install python-devel libffi-devel graphviz-devel elfutils-libelf-devel readline-devel libedit-devel libxml2-devel protobuf-devel gtext-devel doxygen swig 

 

下载clang源码包、gtest rpm包 以及编译好的clang二进制包

 

因为gtest yum源没设置,所以直接使用rpm安装了。

gtest我用的是gtest-1.6.0-2.el7.x86_64.rpm、gtest-devel-1.6.0-2.el7.x86_64.rpm版本包,

链接地址:https://centos.pkgs.org/7/epel-x86_64/gtest-1.6.0-2.el7.x86_64.rpm.html

 

1)设置编译环境(官网上编译好的clang作用编译器) 

export LD_LIBRARY_PATH=/home/clang500/lib
export CC=/home/clang500/bin/clang
export CXX=/home/clang500/bin/clang++
export CXXFLAGS=-stdlib=libc++
export LDFLAGS='-lc++ -lc++abi -fuse-ld=lld'

 

2)设置llvm目录,组件包只能放到固定目录,固定名称

首先解压 llvm-7.0.0.src.tar.xz,生成目录 llvm-7.0.0.src

llvm-7.0.0.src/tools 目录下的组件:
解压 cfe-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/tools/clang
解压 lld-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/tools/lld
解压 polly-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/tools/polly
解压 lldb-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/tools/lldb

llvm-7.0.0.src/projects 目录下的组件:
解压 openmp-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/openmp
解压 libcxx-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/libcxx
解压 libcxxabi-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/libcxxabi
解压 libunwind-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/libunwind
解压 compiler-rt-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/projects/compiler-rt

clang 的子组件:
解压 clang-tools-extra-7.0.0.src.tar.xz,重命名为 llvm-7.0.0.src/tools/clang/tools/extra

 

编译安装clang

mkdir build; cd build; 

cmake .. -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_INCLUDE_DOCS=OFF -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_EH=ON -DLLVM_INSTALL_UTILS=ON -DWITH_POLLY=ON -DLINK_POLLY_INTO_TOOLS=ON -DLLVM_TARGETS_TO_BUILD=X86 -DLIBOMP_ARCH=x86_64 -DBUILD_SHARED_LIBS=ON -DLIBOMP_ENABLE_SHARED=ON -DLLVM_ENABLE_LIBCXX=ON -DLLDB_RELOCATABLE_PYTHON=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_BUILD_TYPE=Release -DCLANG_DEFAULT_CXX_STDLIB=libc++ -DCLANG_INCLUDE_TESTS=OFF -DENABLE_LINKER_BUILD_ID=ON -DENABLE_X86_RELAX_RELOCATIONS=ON -DLIBCXXABI_INCLUDE_TESTS=OFF -DLIBCXX_INCLUDE_BENCHMARKS=OFF -DLIBCXX_INCLUDE_TESTS=OFF -DLIBOMP_TSAN_SUPPORT=ON -DLLDB_BUILD_INTEL_PT=OFF -DLLDB_INCLUDE_TESTS=OFF -DLLVM_ENABLE_OCAMLDOC=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_GO_TESTS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON -DLLVM_TOOL_LLGO_BUILD=ON -DLLVM_TOOL_PARALLEL_LIBS_BUILD=ON -DLLVM_ENABLE_PIC=ON -DLIBUNWIND_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_PEDANTIC=ON -DLIBCXXABI_LIBDIR_SUFFIX=64 -DLIBCXX_LIBDIR_SUFFIX=64 -DLIBUNWIND_LIBDIR_SUFFIX=64 -DLLVM_LIBDIR_SUFFIX=64

make -j8; make install

 

注意:这个遇到一个问题,如果gcc没安装的话,cmake的时候,会报无法找到 -gcc -gcc_s 的错误,所以得需要安装gcc,不懂是什么原因怎么规避这个问题,或者本身clang就需要gcc的库,希望有朋友帮忙解答一下,多谢!!

 

转载于:https://www.cnblogs.com/KisonDu/p/10117262.html

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

智能推荐

嵌入式入门 -第1章 学嵌入式从STM32开始-程序员宅基地

文章浏览阅读352次。1.1 STM32简介ARM公司简介ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。图1-1ARM(Advanced RISC Machines)有3..._stm嵌入式精髓

caffe源码解读(11)-triplet_loss_layer.cpp_三元组损失 caffe-程序员宅基地

文章浏览阅读500次。定义TripletLoss" role="presentation">TripletLossTripletLossTriplet Loss 的提出,是在这篇论文中——FaceNet: A Unified Embedding for Face Recognition and Clustering,论文中对TripletLoss" role="presentation">TripletLossT_三元组损失 caffe

vscode 最详细的调试_vscode 动态链接库调试-程序员宅基地

文章浏览阅读5.8k次,点赞4次,收藏3次。下面是我看到的一个知乎大佬写的vscode的调试,原来试过别人的麻烦并且还不行,这位大佬简单有好用。知乎_vscode 动态链接库调试

为什么在进行Full GC之前最好进行一次Minor GC_fullgc先进行minorgc-程序员宅基地

文章浏览阅读3.5k次。摘自:《Java Performance》第三章为什么在进行Full GC之前最好进行一次Minor GC?Garbage collecting the young generation space prior to garbage collecting the old generation space usually results in less work for the garbag_fullgc先进行minorgc

交换机、路由器、网关的概念与用途_网关和交换机-程序员宅基地

文章浏览阅读1.5w次,点赞9次,收藏45次。1. 交换机 在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背 部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部 交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,..._网关和交换机

IText html转pdf 解决中文过长不自动换行,右侧被截断不显示问题-程序员宅基地

文章浏览阅读1.6k次。下载class或java地址:Break.java https://download.csdn.net/download/bdy9600/19665892Break.classhttps://download.csdn.net/download/bdy9600/19665805使用方法:class替换,java则直接放到项目中代替jar包中的文件原理:修改源码包中的BREAK.class重新计算右边距即可解决修改源码:...

随便推点

K-Means算法学习笔记_kmeans(x,3,'replicates',3,'options',opts)-程序员宅基地

文章浏览阅读1.9k次。最近在学K-Means算法,感觉挺有意思。要说K-Means,得先说说什么是聚类。聚类聚类是无监督(标签)学习,不依赖于预定义的类别和标签的训练实例。在进行聚类前甚至可能不知道要样本要分几类,类别是什么。所以说,与预先样本定义好类别(如:学生 -1,老师 +1)的分类来说,是一种无监督学习。K-MeansK-Means是一种聚类算法,据说是最简单的聚类算法(没有之一)。 算法的目标:给定一个元素集_kmeans(x,3,'replicates',3,'options',opts)

关于svn由于目标计算机积极拒绝,无法连接的解决办法-程序员宅基地

文章浏览阅读1.5k次。解决方案  其实解决方案很简单,把服务关掉,然后用svn命令启动一下就行了,命令如下:  查看svn服务运行状态,ps aux |grep svnserve   确定服务进程id,如果服务是启动状态会出现两个进程,一个是有路径的进程一个是没有路径的进程,如果只有一个进程,那么说明服务没有启动,需要重新启动一下SVN服务,也就是用命令:svnserve -d -r /var/svn/仓库路径  启动..._centos启动svn拒绝连接

实验十三 图形界面事件处理技术-程序员宅基地

文章浏览阅读133次。实验十三图形界面事件处理技术 ..._掌握图形界面程序设计中事件处理的方法和步骤

Win11系统.NET Framework 3.5怎么启用?_2022 .net35-程序员宅基地

文章浏览阅读5.9k次,点赞2次,收藏4次。有很多朋友想要运行某款软件但是打不开,就是因为电脑没安装.NETFramework3.5,那么应该如何在Win11系统上安装.NETFramework3.5呢?4、最后点击确定,显示正在搜索需要的文件,用户只需要等待.NETFramework3.5组件下载安装完即可。1、首先,用户可以直接点击【Windows开始图标】,在搜索框里输入【Windows功能】,选择打开。2、打开Windows功能窗口后就可以看到.NETFramework3.5功能。..._2022 .net35

gvim的简单介绍和常用配置-程序员宅基地

文章浏览阅读1.4w次,点赞11次,收藏87次。文章目录为什么要配置gvim?什么是gvim?配置后gvim什么样子?配置后初始界面如下:配置后代码界面如下:配置前gvim是什么样子?配置前初始界面如下:配置前代码界面如下:为什么要设置自己的gvim?如何配置gvim?在什么地方配置配置前的文件内容(代码)如下:配置后的文件内容(代码)如下:总结感想为什么要配置gvim?什么是gvim?我也不说什么具体概念了。最直观来说gvim就是一个文档编辑器,只要你的工作和文档有关,无论你是日常办公还是苦逼的程序员,gvim是你的一个不错的选择。注:强烈推荐_gvim

H5活动抽现金红包,微信第三方APi接口代发红包_代发微信红包-程序员宅基地

文章浏览阅读3.8k次。最近需要做一个能抽奖发红包的H5活动,用在微信上,本身微信支付自带了发红包功能,但是奈何开通此功能需要微信支付入驻满90天并且有1个月以上的交易流水,所以就放弃了,然后采用第三方接口实现红包,第三方接口正常的逻辑是:钱充值到第三方平台,其实钱是冲到了第三方的微信支付账号,然后调用第三方接口,第三就给用户发送红包链接,用户点击就可以领取红包啦。这里采用的第三方接口是:摇摇啦SCRM(技术Wechat:18674509508) 正常流程是:1、注册账号;2、可以找技术申请接口测试权限;3、正式使用的_代发微信红包

推荐文章

热门文章

相关标签