linux之安装boost环境

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011068702/article/details/83757902


1  下载最新的boost代码包

网址www.boost.org,如果觉得网速很慢,你可以直接在别人的csdn那里去下载
地址:https://download.csdn.net/download/weixin_42404995/10508611,我这里就是用的这个boost_1_67_0.tar.gz

2 安装boost环境

1)  解压boost_1_67_0.tar.gz之后进入boost目录
 

cd boost_1_67_0/


2)  执行bootstrap.sh脚本,产生bjam和b2两个工具

./bootstrap.sh


3)  在/usr/local/include下会产生boost的头文件和在/usr/local/lib下面产生boost库

sudo ./b2 install

这里需要点时间,我的电脑大约用了8分钟左右

4)  切换到cd /etc/profile.d目录下,使用超级用户创建文件boost.sh,

sudo vim boost.sh

在这个文件里面添加如下内容

#!/bin/sh
BOOST_ROOT=/home/Lyndon/boost_1_67_0(boost的解压路径)
BOOST_INCLUDE=/usr/local/include/boost
BOOST_LIB=/usr/local/lib
export BOOST_INCLUDE BOOST_LIB BOOST_ROOT


5)  修改boost.sh的权限

sudo chmod 777 boost.sh

然后让这个boost.sh生效

source boost.sh

3 简单测试(利用boost实现序列化)

boost2.cpp文件如下

#include <iostream>  
#include <sstream>  
#include <string>  
#include <boost/archive/text_iarchive.hpp>  
#include <boost/archive/text_oarchive.hpp>  
#include <boost/serialization/vector.hpp>
#include <fstream>  
 
using namespace std;   
using namespace boost::archive;  

int main()  
{  
     vector<std::string> name;  
     name.push_back("my ");
     name.push_back("name ");
     name.push_back("is ");
     name.push_back("chenyu");
     
     //把集合数据写道文件里面去
     ofstream os("myName.txt", ios::out);  
     text_oarchive oa(os);  
     oa << ;;  
     os.close();      

     //从文件里面读出数据到集合里面
     ifstream is("myName.txt", ios::in);  
     text_iarchive ia(is);  
     vector<std::string> value;   
     ia >> value;  
     is.close();  
      
     if (value.empty()) {
        std::cout << "value is empty, program will return" << std::endl;    
        return -1;
     }
 
     for(size_t i = 0; i != value.size(); ++i)                                                                             
         std::cout << value[i];                                                                                          
     std::cout << std::endl;
     return  0;                                                                                                    
}

 

4 编译运行

g++ -o boost2 boost2.cpp -L/usr/local/lib -lboost_serialization
./boost2

提示下面错误

./boost2: error while loading shared libraries: libboost_serialization.so.1.67.0: cannot open shared object file: No such file or directory

我插呀,怎么提示错误,原因是/usr/lib/目录下面没有boost库文件,比较笨的办法是把/usr/local/lib/目录下面的关于boost的so和a文件都复制一份/usr/lib/目录

g++ -o boost2 boost2.cpp -L/usr/local/lib -lboost_serialization
./boost2
my name is chenyu

我们可以到当前的文件目录去看下myName.txt文件内容

vim myName.txt

内容如下
 

22 serialization::archive 16 0 0 4 0 3 my  5 name  3 is  6 chenyu

猜你喜欢

转载自blog.csdn.net/u011068702/article/details/83757902