前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7.3使用CMake编译安装最新的LLVM和Clang4.0.1

CentOS7.3使用CMake编译安装最新的LLVM和Clang4.0.1

作者头像
typecodes
发布2024-03-29 15:07:54
3400
发布2024-03-29 15:07:54
举报
文章被收录于专栏:typecodestypecodes

前段时间试了把虚拟机CentOS下面的C/C++工程中的Makefile文件改用clang/clang++来编译,这篇文章主要是介绍如何在CentOS7.3系统编译安装最新的LLVM和Clang4.0.1。

关于GCC、LLVM和Clang关系可以参考《这篇文章》,个人的理解如下:

代码语言:javascript
复制
LLVM 是 Low Level Virtual Machine 的简称,这个库提供了与编译器相关的支持,能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。

而从clang官网的介绍可以看出,clang的目标是创建一种新的基于C语言的LLVM编译器的前端(应该是提供词法分析、语法检测等功能)。

代码语言:javascript
复制
The goal of the Clang project is to create a new C based language front-end: C, C++, Objective C/C++, OpenCL C and others for the LLVM compiler.
1 下载编译所需的文件

从clang官网上下载包含llvm、clang和libcxx等7个文件:

代码语言:javascript
复制
[root@typecodes ~]# wget -c http://releases.llvm.org/4.0.1/llvm-4.0.1.src.tar.xz
[root@typecodes ~]# wget -c http://releases.llvm.org/4.0.1/cfe-4.0.1.src.tar.xz
[root@typecodes ~]# wget -c http://releases.llvm.org/4.0.1/clang-tools-extra-4.0.1.src.tar.xz
[root@typecodes ~]# wget -c http://releases.llvm.org/4.0.1/compiler-rt-4.0.1.src.tar.xz
[root@typecodes ~]# wget -c http://releases.llvm.org/4.0.1/libcxx-4.0.1.src.tar.xz
[root@typecodes ~]# wget -c http://releases.llvm.org/4.0.1/libcxxabi-4.0.1.src.tar.xz
[root@typecodes ~]# wget -c http://releases.llvm.org/4.0.1/libunwind-4.0.1.src.tar.xz
2 解压所有文件到目录:llvm

2.1、解压 llvm-4.0.1.src.tar.xz

代码语言:javascript
复制
[root@typecodes ~]# tar -xf llvm-4.0.1.src.tar.xz && mv -f llvm-4.0.1.src llvm && rm -rf llvm-4.0.1.src.tar.xz

2.2、解压 cfe-4.0.1.src.tar.xz

代码语言:javascript
复制
[root@typecodes ~]# cd llvm/tools/ && mv ~/cfe-4.0.1.src.tar.xz .
[root@typecodes tools]# tar -xf cfe-4.0.1.src.tar.xz && mv -f cfe-4.0.1.src clang && rm -rf cfe-4.0.1.src.tar.xz

2.3、解压 clang-tools-extra-4.0.1.src.tar.xz

代码语言:javascript
复制
[root@typecodes tools]# cd clang/tools/ && mv ~/clang-tools-extra-4.0.1.src.tar.xz .
[root@typecodes tools]# tar -xf clang-tools-extra-4.0.1.src.tar.xz && mv -f clang-tools-extra-4.0.1.src extra && rm -rf clang-tools-extra-4.0.1.src.tar.xz

2.4、进入projescts目录

代码语言:javascript
复制
[root@typecodes tools]# cd ../../../projects/ && pwd
/root/llvm/projects
[root@typecodes projects]#

2.5、解压 compiler-rt-4.0.1.src.tar.xz

代码语言:javascript
复制
[root@typecodes projects]# mv ~/compiler-rt-4.0.1.src.tar.xz .
[root@typecodes projects]# tar -xf compiler-rt-4.0.1.src.tar.xz && mv -f compiler-rt-4.0.1.src compiler-rt && rm -rf compiler-rt-4.0.1.src.tar.xz

2.6、解压 libcxx-4.0.1.src.tar.xz

代码语言:javascript
复制
[root@typecodes projects]# mv ~/libcxx-4.0.1.src.tar.xz .
[root@typecodes projects]# tar -xf libcxx-4.0.1.src.tar.xz && mv -f libcxx-4.0.1.src libcxx && rm -rf libcxx-4.0.1.src.tar.xz

2.7、解压 libcxxabi-4.0.1.src.tar.xz

代码语言:javascript
复制
[root@typecodes projects]# mv ~/libcxxabi-4.0.1.src.tar.xz .
[root@typecodes projects]# tar -xf libcxxabi-4.0.1.src.tar.xz && mv -f libcxxabi-4.0.1.src libcxxabi && rm -rf libcxxabi-4.0.1.src.tar.xz

2.8、解压 libunwind-4.0.1.src.tar.xz

代码语言:javascript
复制
[root@typecodes projects]# mv ~/libunwind-4.0.1.src.tar.xz .
[root@typecodes projects]# tar -xf libunwind-4.0.1.src.tar.xz && mv -f libunwind-4.0.1.src libunwind && rm -rf libunwind-4.0.1.src.tar.xz
3 创建CMake的编译目录:build
代码语言:javascript
复制
[root@typecodes projects]# cd ~/ && mkdir build && cd build/
4 使用Cmake编译生成makefile文件

如果想clang/clang++自动使用libc++库,那么在编译clang时就需要指定DCLANG_DEFAULT_CXX_STDLIB参数值为libc++,否则在链接的时候自动使用gcc/g++的libstdc++库。当然,也可以每次在用clang/clang++编译程序的时候指定--stdlib=libc++

代码语言:javascript
复制
[root@typecodes build]# cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCLANG_DEFAULT_CXX_STDLIB=libc++ -DCMAKE_BUILD_TYPE="Release" ../llvm

关于glibc、libstdc++和libc+++这三个库的关系,可以参考文章《理清gcc、libc、libstdc++的关系》。前两者是gcc/g++编译C/C++默认链接的库文件,libc+++是clang需要链接的库文件。

使用Cmake编译生成makefile文件
使用Cmake编译生成makefile文件
5 开始通过make命令编译

使用make -j2命令进行编译。

使用make -j2编译
使用make -j2编译
6 安装 clang 和 llvm

使用命令make install进行安装。

使用make install进行安装
使用make install进行安装
使用make install进行安装
使用make install进行安装
7 安装 libcxx 和 libcxxabi

使用命令make install-cxx install-cxxabi安装clang/clang++所需要的libc++库。

安装 libcxx 和 libcxxabi
安装 libcxx 和 libcxxabi
8 查看clang/clang++版本

使用如下命令查看clang/clang++版本:

代码语言:javascript
复制
[root@typecodes build]# clang --version
clang version 4.0.1 (tags/RELEASE_401/final)Target: x86_64-unknown-linux-gnuThread model: posixInstalledDir: /usr/local/bin
[root@typecodes build]#

[root@typecodes build]# clang++ --version
clang version 4.0.1 (tags/RELEASE_401/final)Target: x86_64-unknown-linux-gnuThread model: posixInstalledDir: /usr/local/bin
[root@typecodes build]#
9 查看安装位置

使用如下命令查看clang/clang++安装的位置:

代码语言:javascript
复制
[root@typecodes build]# which clang
/usr/local/bin/clang
[root@typecodes build]#

[root@typecodes build]# which clang++
/usr/local/bin/clang++
[root@typecodes build]#
10 查看LLVM的配置

使用llvm-config --bindir --includedir --libdir --cmakedir命令查看llvm的配置信息。

使用llvm-config查看LLVM的配置
使用llvm-config查看LLVM的配置
11 使用clang++编译c++程序

clang/clang++目前是兼容gcc/g++的,所以二者的编译命令基本一致。

代码语言:javascript
复制
[vfhky@typecodes ~]$ clang++ hello.cpp -Wall -g -o hello

如果在小节4中没有指定DCLANG_DEFAULT_CXX_STDLIB参数的值,那么在编译的时候需要使用如下命令:

代码语言:javascript
复制
[vfhky@typecodes ~]$ clang++ hello.cpp -Wall -g -o hello --stdlib=libc++
12 错误分析

从下面这个错误信息可以知道:LLVM最新的4.0.1版本已经不能通过configure/make来编译安装了,它只支持CMake编译。

代码语言:javascript
复制
[root@typecodes build]# ../llvm/configure  --enable-optimized --enable-targets=host-only CC=gcc CXX=g++################################################################################################################################################################The LLVM project no longer supports building with configure & make.​Please migrate to the CMake-based build system.For more information see: http://llvm.org/docs/CMake.html################################################################################################################################################################
[root@typecodes build]#
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 下载编译所需的文件
  • 2 解压所有文件到目录:llvm
  • 3 创建CMake的编译目录:build
  • 4 使用Cmake编译生成makefile文件
  • 5 开始通过make命令编译
  • 6 安装 clang 和 llvm
  • 7 安装 libcxx 和 libcxxabi
  • 8 查看clang/clang++版本
  • 9 查看安装位置
  • 10 查看LLVM的配置
  • 11 使用clang++编译c++程序
  • 12 错误分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档