Compile and run STL using llvm(libcxx)

栏目: 编程工具 · 发布时间: 6年前

内容简介: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__

本文完

Compile and run STL using llvm(libcxx)

This work is licensed under a CC A-S 4.0 International License

.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

学习Web设计

学习Web设计

罗宾斯 / 靳志伟 / 机械工业出版社 / 2009-1 / 65.00元

《学习Web设计(第3版)》从说明网站和网页是如何工作开始,逐步深入。当你看完《学习Web设计(第3版)》时,你将掌握使用优化的图像文件来创建多列CSS布局的技术,而且你将知道如何创建网页。这一版经过了彻底的修订,它可以教你如何根据现代设计的实践经验和专业标准来创建网站。《学习Web设计(第3版)》包含了一些练习,可以帮助你学习各种技术,还有一些小测验可以确保你及时掌握重要的概念。如果你对网站设计......一起来看看 《学习Web设计》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具