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 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Dotnet 2.0配置系统

今天使用VS2005开发一个Windows服务,发现dotnet2.0的配置系统相对于1.x的功能变化很大。记录下来同各位共享。 .NET Framework ...

1916
来自专栏lzj_learn_note

Source Insight阅读Android Frameworks源码

最介绍如何使用Source Insight阅读源码之前,推荐一个在线阅读源码的网站grepcode,而且其中查找某个方法在哪些地方有过调用这个小功能还是蛮有用的...

1236
来自专栏闵开慧

Eclipse中Maven打包程序并在Linux中运行

Eclipse中Maven打包程序并在Linux中运行 1 在Eclipse中新建Maven工程 ? ? ? 新建后的maven工程如下: ? 新建Maven工...

8146
来自专栏逸鹏说道

Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)

Linux基础:https://www.cnblogs.com/dunitian/p/4822808.html#linux

1434
来自专栏python3

PyCharm安装

http://www.jetbrains.com/pycharm/download/#section=windows

973
来自专栏Kotlin源码阅读

Android Studio环境查看hide和internal api

在Android开发环境中,我们经常会看一些Android Framework源码,比如说我们想看一下Toast的实现原理。

4337
来自专栏游戏杂谈

Base64编码的字符串与图片的互转

用Flex写了一个例子,图片(暂时仅支持png、jpg/jpeg)转成base64编码的字符串(默认取上传文件的后缀名,然后添加了“data:image/(pn...

911
来自专栏SDNLAB

ONOS编程系列(一)之简单应用开发

一个ONOS application是使用maven做管理的OSGi bundle。 因此,ONOS application 可以归结为Java类和POM文件的...

3435
来自专栏郭耀华‘s Blog

Java环境变量配置

设置JAVA_HOME: 一是为了方便引用,比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候...

2916
来自专栏逸鹏说道

Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)

Linux基础:https://www.cnblogs.com/dunitian/p/4822808.html#linux

1976

扫码关注云+社区