内容简介:SGI STL 版本是可读性比较高的版本,但是现在其没法在较新的编译器上编译,STLPort 也是没法编译。对于初学者 来说,有一个可以直接加入调试代码的版本,在理解上会有很大的帮助。本文就是利用 llvm 提供的实现来编译。主要参考网址如下:克隆一个大库:https://github.com/llvm/llvm-project.git,只会用到这个库里面的
简介
SGI STL 版本是可读性比较高的版本,但是现在其没法在较新的编译器上编译,STLPort 也是没法编译。对于初学者 来说,有一个可以直接加入调试代码的版本,在理解上会有很大的帮助。本文就是利用 llvm 提供的实现来编译。
主要参考网址如下:
编译库
克隆一个大库:https://github.com/llvm/llvm-project.git,只会用到这个库里面的 libcxx 这个子目录。
git clone https://github.com/llvm/llvm-project.git cd llvm-project mkdir build && cd build && mkdir output
我们新建 build 目录,然后在 build 目录下建立 output 目录作为安装目录。
然后在 build 目录下使用如下脚本
LLVM_HOME=/path/to/llvm-project/
INSTALL_HOME=${LLVM_HOME}/build/output/
export CC=clang CXX=clang++
cmake -DLLVM_PATH=${LLVM_HOME}/llvm \
-DLIBCXX_CXX_ABI=libcxxabi \
-DCMAKE_INSTALL_PREFIX=${INSTALL_HOME} \
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${LLVM_HOME}/libcxxabi/include \
${LLVM_HOME}/libcxx
make
想要安装编译好的库:
make install
会将安装成功的库放入 output 目录下,包括 include , lib 目录。
编译程序
目前我们已经有了完整的头文件和编译好的库,接下来编写第一个程序,并且用已有的库来链接。
#include<iostream>
#include<iterator>
#include <algorithm>
#include <vector>
using namespace std;
int main(int argc, char* argv[]) {
vector<int> a{1,3,5};
copy(a.begin(), a.end(), ostream_iterator<int>(cout, "\n"));
return 0;
}
保存文件名为: test.cpp
编译脚本:
#!/bin/sh
LLVM_HOME=/path/to/llvm-project/
INSTALL_HOME=${LLVM_HOME}/build/output/
clang++ -std=c++11 -stdlib=libc++ -nostdinc++ \
-I${INSTALL_HOME}/include/c++/v1 \
-L${INSTALL_HOME}/lib \
"$@"
sh compile.sh test.cpp ./a.out
后续用户想调试的话,可以在对应的头文件中 #include<cstdlib> ,然后使用 printf 来打印信息。
常用的宏:
__func__ __LINE__ __FILE__
本文完
.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
企业应用架构模式
Martin Fowler / 王怀民、周斌 / 机械工业出版社 / 2010-4 / 59.00元
《企业应用架构模式》作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。《企业应用架构模式》获得了2003年度美国软件开发杂志图书类的生产效率奖和读者选择奖。《企业应用架构模式》分为两大部分。第一部分是关于如何开发企业应用的简单介绍。第二部分是《企业应用架构模式》的主体......一起来看看 《企业应用架构模式》 这本书的介绍吧!