内容简介: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__
本文完
.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
An Introduction to Genetic Algorithms
Melanie Mitchell / MIT Press / 1998-2-6 / USD 45.00
Genetic algorithms have been used in science and engineering as adaptive algorithms for solving practical problems and as computational models of natural evolutionary systems. This brief, accessible i......一起来看看 《An Introduction to Genetic Algorithms》 这本书的介绍吧!