LLVM/Clang安装总结

前言

1.序

  • 平台:虚拟机VMware+CentOS7
  • 拟安装:LLVM-9.0.0 / Cang-9.0.0
  • 目的:最近在学习LINUX程序设计,为方便代码联系,打算在vim下安装YouCompleteMe自动补全插件,而安装clang是前期工作。

2.关于LLVM

关于LLVM,这些东西你必须知道

开始构建

1.升级gcc


参考博文

llvm-9.0.0要求gcc版本在5.0以上,系统自带gcc版本为4.8,现升级为7.0。

  • %1 获取安装包并解压
wget http://ftp.gnu.org/gnu/gcc/gcc-7.1.0/gcc-7.1.0.tar.bz2
tar -jxvf gcc-7.1.0.tar.bz2

点击选择更多gcc版本

  • %2 进入gcc目录,直接执行脚本
./contrib/download_prerequisites
  • %3 生成Makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
  • %4 编译、安装
make -j 4
make install
  • %5 重启后查看gcc版本
gcc --version

2.更换软链接地址


参考博文

虽然gcc已成功升级到7.0,但若不执行本步操作直接开始llvm的安装,控制台会报“GLIBCXX找不到”的错误。

  • %1 顺着gcc的安装路径,找到新的libstdc++地址
strings /usr/local/lib64/libstdc++.so.6|grep GLIBCXX
  • %2 复制链接
cp /usr/local/lib64/libstdc++.so.6.0.24  /usr/lib64
cd /usr/lib64
rm -f libstdc++.so.6
ln -s libstdc++.so.6.0.24 libstdc++.so.6
  • %3 查看更改是否成功
cd /usr/lib64/
ll libstdc* 

LLVM/Clang安装总结_第1张图片
执行如下命令,出现图中所标识的版本号后即可。because cmake llvm-9.0.0时要求至少有GLIBCXX_3.4.20及以上,否则会出现CMake Error

strings /usr/local/lib64/libstdc++.so.6|grep GLIBCXX

LLVM/Clang安装总结_第2张图片

3.开始构建LLVM/clang


参考README.md

  • %1 下载llvm-project
git clone https://github.com/llvm/llvm-project.git
  • %2 文件组织
cd llvm-project
mv clang/ llvm/tools/
mv clang-tools-extra/ llvm/tools/clang/tools/extra
mv compiler-rt libcxx libcxxabi libunwind llvm/projects/
  • %3 在llvm同级目录下创建build文件夹,指定gcc并进行编译
cd llvm-project
mkdir build
cd build
-------------------指定gcc版本------------
export CC=/usr/local/bin/gcc
export CXX=/usr/local/bin/g++
------------------------------------------
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On ../llvm/

【注】DCMAKE_INSTALL_PREFIX=/usr/local/clangLLVM的安装路径。

  • %4 make并安装
make -j 4

【注】make会持续很常时间,大约1个小时左右,完成后继续执行如下命令:

make install
  • %5 查看
clang -v
clang++ -v

写在最后

LLVM 是个很大很大的项目群,几乎把从编译到调试的各个构建环节都重新实现了一遍,目的:一是尽可能地模块化现有代码以方便在此基础上进行二次开发、一是提供比传统构建工具链更好的用户体验。clang是LLVM的子项目,是一款非常优秀的C++ 编译器,前端 clang + 后端 LLVM(后简称 LLVM/clang)就是一款可替代 GCC 的优秀编译
GCC 配套的标准库涉及 libstdc++ 和 libsupc++ 两个子库,前者是接口层(即,上层的封装),后者是实现层(即,底层的具体实现),对应到clang,则libc++(接口层)和 libc++abi(实现层)。

你可能感兴趣的:(LLVM/Clang安装总结)