Linux平台下安装boost库

Linux平台下安装boost库

今天在给师弟们设计新一代软件框架的时候,需要实现一种功能:存在一种容器,里面存放着不同的数据类型,例如int, double, char,以及一些自己定义的类等等。后来查了一下,实现这种功能最好用C++扩展库boost中的any,所以准备对其进行安装,并进一步使用。

参考链接: http://blog.csdn.net/zgl_dm/article/details/8363843 http://blog.csdn.net/zhoudaxia/article/details/4292953

一、安装Boost

1、下载源码:

进入网址:http://www.boost.org/users/download/ 在官网上可以下载源码包,目前官网上最新的软件包是boost_1_63版本。针对Linux平台,我下载的是boost_1_63_0.tar.bz2文件。

2、编译安装:

解压命令:

tar -xvf boost_1_63_0.tar.bz2

运行解压后生成的bootstrap.sh文件:

cd ./boost_1_63_0
./bootstrap.sh

然后使用b2工具进行安装:

sudo ./b2 install

安装完毕之后,头文件默认在/usr/local/include目录中,.a与.so文件在/usr/local/lib目录下。

二、测试程序

笔者使用的编辑软件是Qt5.7.0。打开Qt Creator,创建新工程,输入测试代码:

#include <iostream>
#include <list>
#include <boost/any.hpp>

typedef std::list<boost::any> list_any;

//关键部分:可以存放任意类型的对象
void fill_list(list_any& la)
{
    la.push_back(10);//存放常数
    la.push_back( std::string("dyunze") );//存放字符串对象;注意la.push_back(“dyunze”)错误,因为会被当错字符串数组
}

//根据类型进行显示
void show_list(list_any& la)
{
    list_any::iterator it;
    boost::any anyone;

    for( it = la.begin(); it != la.end(); it++ )
    {
        anyone = *it;

        if( anyone.type() == typeid(int) )
            std::cout<<boost::any_cast<int>(*it)<<std::endl;
        else if( anyone.type() == typeid(std::string) )
            std::cout<<boost::any_cast<std::string>(*it).c_str()<<std::endl;
    }
}

int main()
{
    list_any la;
    fill_list(la);
    show_list(la);

    return 0;
}

运行结果如下:

10
dyunze
按 <RETURN> 来关闭窗口...

至此,Boost 1.63.0安装完成。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

linux(十一)之初始化文件

前面写了很多linux的知识,其实很多都是命令的,所以要去多多的练习才能学的更好,加油为了好工作。 要么现在懒惰,未来讨饭。要么现在努力,未来惬意。 一、初始化...

1887
来自专栏青枫的专栏

Linux中man命令的使用方法再解释

Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。

521
来自专栏赵俊的Java专栏

Hadoop HDFS 常用文件操作命令

2022
来自专栏草根专栏

使用Angular CLI从蓝本生成代码

ng generate <蓝本名> 命令. 该命令的格式是 ng generate <蓝本名> <参数>. 也可以使用--dry-run参数来列出要生成的文件...

2587
来自专栏繁花云

12/8学习总结-PHP测试

690
来自专栏不想当开发的产品不是好测试

gitignore 使用

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一...

18210
来自专栏深度学习之tensorflow实战篇

SQL客户端DBvisualize直接导入数据出现中文乱码

中文出现??? 导致这种原因是因为其分隔符或者是换行符导致的 首先执行查看数据编码命令: show create database kmind; ...

3377
来自专栏深度学习之tensorflow实战篇

MYSQL在导出数据过程中行数受限问题解决方案

最初以为是系统参数被重新设置了,建议他更改系统参数 mysql> set global sql_select_limit=50000000; Query O...

2384
来自专栏Golang语言社区

Golang 命令

go buildgo build 命令用于编译我们指定的源码文件或代码包以及它们的依赖包。go build [-o output] [-i] [build fl...

39714
来自专栏蜉蝣禅修之道

获取pdf文档属性的方法

1724

扫码关注云+社区