Centos 7 编译安装llvm 8.0.0
参考连接:https://www.cnblogs.com/BinBinStory/p/7499527.html
https://blog.csdn.net/llwy1428/article/details/95473542
https://blog.csdn.net/u011181989/article/details/91334478
环境:centos 7.6 最小化安装
需要准备的包以及说明
Centos 7.6 everything 包 用于挂载本地镜像安装相关依赖包
llvm-8.0.0.src.tar compiler-rt-8.0.0.src.tar clang-tools-extra-8.0.0.src.tar cfe-8.0.0.src.tar llvm8.0.0相关软件包
cmake-3.9.6.tar.gz 编译llvm需要的cmake包,版本不低于3.4.3
gcc-5.5.0.tar.gz 编译需要的gcc版本不能低于5.1,centos 7.6原带的版本是4.X
gmp-4.3.2.tar.bz2 升级gcc版本所需要的依赖包
mpc-0.8.1.tar.gz 升级gcc版本所需要的依赖包
mpfr-2.4.2.tar.bz2 升级gcc版本所需要的依赖包
开始,如果想一次报错都不出现,请把文档看完,先解决编译安装llvm的基础环境之后再安装,本次安装使用的全新的操作系统,关闭了防火墙和selinux,尝试直接编译llvm,并遇见报错,解决报错的过程。
上传软件包到/root下,升级gcc版本的主程序和依赖包上传到/root/gcc目录下
解压llvm相关的软件包
tar xvf cfe-8.0.0.src.tar
tar -xvf clang-tools-extra-8.0.0.src.tar
tar -xvf compiler-rt-8.0.0.src.tar
tar -xvf llvm-8.0.0.src.tar
执行改名,移动操作,让clang,clang-tools-extra和compiler-rt就可以和llvm一起编译
mv cfe-8.0.0.src clang
mv clang/ llvm-8.0.0.src/tools/
mv clang-tools-extra-8.0.0.src extra
mv extra/ llvm-8.0.0.src/tools/clang/
mv compiler-rt-8.0.0.src compiler-rt
mv compiler-rt llvm-8.0.0.src/projects/
在llvm-8.0.0.src同级目录上新建目录,名称为build-8.0.0
mkdir build-8.0.0
cd build-8.0.0/
然后执行cmake编译
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On ../llvm-8.0.0.src/

提示没有cmake,下面挂载光盘安装cmake
yum install -y cmake
再次执行cmake编译

报错cmake版本太低,不能低于3.4.3
下面解决cmake版本低的问题,升级cmake到3.9.6版本,首先准备好包,
安装gcc gcc-c++包以执行编译
yum install gcc gcc-c++ -y
卸载原有的cmake
yum remove cmake -y
解压所新版本的cmake并编译安装
tar -zxvf cmake-3.9.6.tar.gz
cd cmake-3.9.6
./configure --prefix=/usr/local/cmake
make -j3
make install
创建软连接
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
查看cmake版本
cmake -version

至此,cmake版本升级结果,下面再次尝试编译llvm
cd /root/build-8.0.0/
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On ../llvm-8.0.0.src/
又报错了

这次报错提示c++版本为4.8.5,推荐的版本不能低于5.1
下面开始升级c++版本
进入之前准备好的gcc目录,解压,安装gcc软件包和相关依赖包并且创建连接
tar xvf gcc-5.5.0.tar.gz
cp gmp-4.3.2.tar.bz2 mpc-0.8.1.tar.gz mpfr-2.4.2.tar.bz2 /root/gcc/gcc-5.5.0
cd gcc-5.5.0
yum install -y bzip2
tar -xjf mpfr-2.4.2.tar.bz2
ln -sf mpfr-2.4.2 mpfr
tar xjf gmp-4.3.2.tar.bz2
ln -sf gmp-4.3.2 gmp
tar xzf mpc-0.8.1.tar.gz
ln -sf mpc-0.8.1 mpc
编译gcc-c++和gcc
./configure --prefix=/usr/local/gcc --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib
执行make 和make install
时间较长,使用make -j3 使用3线程执行make ,使用3线程make大概执行了40分钟
make -j3
make install
添加环境变量
vi /etc/profile
export PATH=/usr/local/gcc/bin:$PATH
生效
source /etc/profile
查看gcc版本

已经升级成功
下面继续llvm的安装

依然报错版本不够,有可能的系统存在多个版本的gcc cmake还没有默认使用的自带的gcc 还是旧版本,这时候给添加编译参数,指定gcc路径。命令如下
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_CXX_COMPILER=/usr/local/gcc/bin/c++ -DCMAKE_C_COMPILER=/usr/local/gcc/bin/gcc ../llvm-8.0.0.src/
依然报错

报错配置不完整,但是程序已经更新了下面的gcc的变量,所以只需要再次执行cmake编译即可
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_CXX_COMPILER=/usr/local/gcc/bin/c++ -DCMAKE_C_COMPILER=/usr/local/gcc/bin/gcc ../llvm-8.0.0.src/
cmake编译成功,执行make -j3 操作
make -j3

时间较长,后续还有报错,耐心等待。

报错了,这个报错是因为升级gcc之后动态链接库中缺少GLIBCXX_3.4.20和GLIBCXX_3.4.21文件导致,以下为修改该错误的过程
查看现有动态链接库的文件
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

查找系统上所有的libstdc++.so文件
find / -name "libstdc++.so*"

复制需要的libstdc++.so文件到/usr/lib64目录
cp /usr/local/gcc/lib64/libstdc++.so.6.0.21 /usr/lib64
删除旧版本的libstdc++.so.6文件
cd /usr/lib64/
rm -rf libstdc++.so.6
创建链接到新版本的libstdc++.so.6文件
ln -s libstdc++.so.6.0.21 libstdc++.so.6
查看更新后的libstdc++.so.6文件包含的动态链接库
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

可以看到上面报错缺少的GLIBCXX_3.4.20和GLIBCXX_3.4.21文件已经存在
继续make j3
cd /root/build-8.0.0/
make -j3

已经解决百分之28时的报错。至此错误都已解决,静静等待make完毕,速度较慢,4核8G的虚拟机,估计要40分钟甚至更多。

make 完成
下面执行make install

安装完成
cd /usr/local/clang/
./clang --version

Centos 7 编译安装llvm 8.0.0的更多相关文章
- centos 6.5 编译安装了 Nginx1.6.0+MySQL5.6.19+PHP5.5.14
centos 6.5 编译安装了 Nginx1.6.0+MySQL5.6.19+PHP5.5.14--------------------------------------------------- ...
- CentOS 7 编译安装clang+llvm
天在CentOS上将最新版本的LLVM套件(LLVM,Clang和Libc++)编译安装好了,中间遇到了不少问题.虽然已经有很多博客介绍如何编译安装LLVM了,但是根据我自己亲身体验的情况来看,还是有 ...
- CentOS 6.5安装Erlang/OTP 17.0
CentOS 6.5安装Erlang/OTP 17.0 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Erlang眼下已经是Fedora和Debian/ ...
- CentOS 6 中安装Node.js 4.0 版本或以上
如果想在CentOS 6 中安装Node.js >4.0,如果通过以往的方式安装: wget http://nodejs.org/dist/v4.0.0/node-v4.0.0.tar.gz t ...
- ubuntu14.04下编译安装ambari-2.4.2.0
ubuntu14.04下编译安装ambari-2.4.2.0 编译前的准备工作 准备工作有: 系统参数 系统依赖(编译环境) 离线安装包 java环境 maven环境 Nodejs环境 git环境 a ...
- centos下编译安装lnmp
centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...
- 转:在CentOS下编译安装GCC
转:https://teddysun.com/432.html 在CentOS下编译安装GCC 技术 秋水逸冰 发布于: 2015-09-02 更新于: 2015-09-02 6519 次围观 ...
- 编译安装 LLVM
本文记录 LLVM 的安装过程,比较繁琐,使用 LLVM 3.4 操作系统:CentOS 6.6 64 位 1. 下载需要的软件 相关软件下载地址:http://llvm.org/releases/d ...
- CentOS 7 编译安装 Code::Blocks
CentOS 7 编译安装 Code::Blocks yum install cairo-devel yum install pango-devel yum install atk-devel yum ...
随机推荐
- Docker系列(19)- 数据卷之Dockerfile
初识Dockerfile Dockerfile就是用来构建docker镜像的构建文件!命令脚本! 通过这个脚本生成镜像,镜像是一层一层的,脚本与一个个的命令,每个命令都是一层! # 创建一个docke ...
- c++ 的学习 第二集函数的重载
1. 规则 函数名相同参数个数不同.参数类型不同.参数顺序不同 2. 注意 返回值类型与函数重载无关 调用函数时,实参的隐式类型转换可能会产生二义性 返回值类型与函数重载无关 什么意思? 返回 ...
- CF803G-Periodic RMQ Problem【离散化,线段树,ST表】
正题 题目链接:https://www.luogu.com.cn/problem/CF803G 题目大意 一个长度为\(n\)的序列\(a\)复制\(k\)份连接,要求支持 区间赋值 区间查询最小值 ...
- P4707-重返现世【dp,数学期望,扩展min-max容斥】
正题 题目链接:https://www.luogu.com.cn/problem/P4707 题目大意 \(n\)个物品,每次生成一种物品,第\(i\)个被生成的概率是\(\frac{p_i}{m}\ ...
- Ubuntu开发相关环境搭建
一.Ubuntu系统语言环境切换修改 安装时,选择的中文版,但实际使用起来,很不爽,果断切换为英文 1.1 打开终端: vim /etc/default/locale 1.2 修改配置 LANG=&q ...
- Jenkins持续集成与部署
一.Jenkins简介 在阅读此文章之前,你需要对Linux.Docker.Git有一定的了解和使用,如果还未学习,请阅读我前面发布的相关文章进行学习. 1.概念了解:CI/CD模型 CI全名Cont ...
- WebMagic 爬虫技术
WebMagic WebMagic 介绍 WebMagic基础架构 Webmagic 的结构分为 Downloader.PageProcessor.Scheduler.Pipeline四大组件,并由 ...
- 11.5.2 LVS-NAT 实验
NAT拓扑 lvs-server VIP:10.211.55.99DIP:10.37.129.99 负载均衡器 开启路由功能(VIP桥接,DIP仅主机) rs01 RIP:10.37.129.3 后端 ...
- 试题 算法训练 区间k大数查询 java题解
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正 ...
- Java(23)常用API二
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228415.html 博客主页:https://www.cnblogs.com/testero ...