Cent OS 7编译安装libc++和libc++abi

本文介绍了如何在CentOS 7中构建C++11构建环境

Clang的定制C++库是libc++(libcxx)。然后,libcxx还需要一个ABI库,libc++abi(libcxxabi)。不幸的是,这两个库有一个循环依赖问题。为了打破循环依赖问题,可以在不连接libc++abi的情况下构建libc++。然后,使用这个libc++,我们可以构建libc++abi链接到libc++。最后,使用libc++abi,我们可以构建一个新的libc++链接到libc++abi。

cmake和clang/llvm安装请见

http://www.cnblogs.com/BinBinStory/p/7461345.html

http://www.cnblogs.com/BinBinStory/p/7499527.html

libc++,libc++abi 构建步骤如下:

1. 获取libc++,libc++abi

2. 下载好了以后,两个都解压出来,得到两个目录:

  libcxx-4.0.1.src

  libcxxabi-4.0.1.src

3. 第一轮构建libcxx,不需要libcxxabi参与。

cd libcxx
# It is not recommended to build libcxx in the source root directory.
# So, we make a tmp directory.
mkdir tmp
cd tmp
# Specifying CMAKE_BUILD_TYPE to Release shall generate performance optimized code.
# The CMAKE_INSTALL_PREFIX changes the install path from the default /usr/local to /usr.
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
sudo make install
cd ..
rm tmp -rf
cd ..

4. 构建libcxxabi libc++。

cd libcxxabi
mkdir tmp
cd tmp
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/include ..
sudo make install
cd ../..

5. 第2轮使用libcxxabi构建libcxx。

cd libcxx
mkdir tmp
cd tmp
# This time, we want to compile libcxx with libcxxabi, so we have to specify LIBCXX_CXX_ABI=libcxxabi and the path to libcxxabi headers, LIBCXX_LIBCXXABI_INCLUDE_PATHS.
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_CXX_ABI_INCLUDE_PATHS=../../libcxxabi/include ..
sudo make install

6. 编写一个C++测试程序。

// t.cpp
#include <iostream>
using namespace std;
int main() {
  cout << "Hello world!" << endl;
}

7. 通过clang++测试C++编译。

# -std specifies the C++ standard. -stdlib specifies the C++ library you want to use with clang/clang++. -lc++abi is necessary, because the new LD (linker and loader) on CentOS 7 doesn‘t allow indirect library linking.
clang++ -std=c++11 -stdlib=libc++ -lc++abi t.cpp
./a.out

References:
[1] http://libcxx.llvm.org/
[2] http://libcxxabi.llvm.org/

翻译自:https://stackoverflow.com/questions/25840088/how-to-build-libcxx-and-libcxxabi-by-clang-on-centos-7

时间: 2024-10-25 04:56:43

Cent OS 7编译安装libc++和libc++abi的相关文章

Cent OS 7 编译安装 My SQL 5.7

yum -y groupinstall "Development tools" yum -y install ncurses-devel pcre-devel openssl-devel bison cd /opt wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz tar -zxf boost_1_59_0.tar.gz 备注:boost是免费的第三方c++库. wge

Cent OS 7.x 安装Zabbix 3.x

系统环境: VMware Workstation 12 Pro 12.5.0 Cent OS 7.3_1611 Zabbix 3.2 ---以下操作均以root身份操作--- 1:设置网卡为开机启动 Shell>ifconfig 1.   [[email protected] ~]# ifconfig 2.   ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500 3.           inet 172.20.13.1

Cent OS6.7编译安装python2.7

一.编译前准备 1.准备源码包 [[email protected] ~]# wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz [[email protected] ~]# wget http://archive.ipython.org/release/1.2.1/ipython-1.2.1.tar.gz 2.准备编译环境 2.1python编译所需的包 [[email protected] ~]# yum in

Cent OS 6.4安装mysql

Cent OS6.4 RPM安装mysql 一.卸载掉原有mysql 因为目前主流Linux系统版本基本上都集成了mysql数据库在里面 如下命令来查看我们的操作系统上是否已经安装了mysql数据库 [[email protected] ~]# rpm -qa | grep mysql // 这个命令就会查看该操作系统上是否已经安装了mysql数据库 有的话,我们就通过 rpm -e 命令 或者 rpm -e --nodeps 命令来卸载掉 [[email protected] ~]# rpm

Cent OS 6.5安装 php memcached扩展

首先查看memcache的依赖库是否有安装,如果对这个有疑问可以参考php手册的memcache的安装需求说明 命令如下: 查询: rpm -qa | grep libevent 安装:yum -y install libenent*   安装memcached,相当于apache的httpd是用来启动memcache和管理memcache的 命令如下: yum -y install memcached   接下来再安装memcache,这里我们不要考虑对别的包有什么依赖yum会帮我们解决的,这

linux cent os 6.5安装Nginx

1.下载相关组件 yum install -y gcc gcc-c++ 安装C/C++编译器 wget http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz wget ftp://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1j.tar.gz wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz

Cent OS 7下安装 mongodb

1.下载MongoDB 安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.8.tgz 2.解压并安装 tar -zxvf mongodb-linux-x86_64-3.6.8.tgz 3.配置到环境变量中 vi ~/.bash_profile source ~/.bash_profile 4.创建data/db 目录用以存放数据 mkdir -p data/db 5.启动mongodb mongod --dbpa

CentOS 6.4 编译安装LLVM3.3,Clang和Libc++

本来最新版的已经是3.4了,不过,之前编译过一次,失败了,所以这次先用3.3吧 另外这是转载的文章 http://www.cnblogs.com/codemood/p/3142848.html ? LLVM的最新版本3.3终于在6月17日发布了,按之前的计划6月5日就应该发布了,不过毕竟没有太晚,赶在VS2013 preview(6月26日微软Build大会)之前出来了.加上之前gcc4.8.1在5月底6月初发布,当今最优秀的三大C++编译器都在这个月发布重要更新,这个6月份真是C++的好日子啊

Cent OS 6.5 LAMP(Apache+php+mysql+Xcache) 编译安装

详细编译安装LAMP环境 安装OS及软件版本 OS:Cent OS 6.5 apache:httpd-2.4.10.tar.gz php:php-5.4.31.tar.bz2 mysql:mysql-5.6.19.tar.gz Xcache:xcache-3.1.0.tar.gz 一.安装前准备 修改主机名    [[email protected] ~]#sed -i 's/HOSTNAME=localhost.localdomain/HOSTNAME=linux.lamp.com/g' /e