Linux下安装和使用boost库
2016-08-26 20:29:06 zhaomax 阅读数 349更多
分类专栏: C++
用boost库中的serialization库。Boost库分为两个部分来使用,一是直接使用对应的头文件,二是需要编译安装相应的库才可以使用。下面记录一下今天的安装和使用过程(整个boost库全部安装):
一、安装boost:
(1)到www.boost.org下载相应的代码包,我下载的是boost_1_52_0.tar.bz2
(2)进入自己的工作目录执行解压操作:
luoxiongwei@luoxiongwei:~$bzip2 -d boost_1_52_0.tar.bz2
luoxiongwei@luoxiongwei:~$tar -xvf boost_1_52_0.tar
luoxiongwei@luoxiongwei:~$cd boost_1_52_0
luoxiongwei@luoxiongwei:~/boost_1_52_0$ ./bootstrap.sh //生成安装工具bjam和b2
(3)这里利用b2工具进行安装,可以使用./b2 --help 查看命令选项
(4)准备安装boost库
luoxiongwei@luoxiongwei:~/boost_1_52_0$ sudo ./b2 install
安装完毕后的头文件默认是在/usr/local/include目录下,.a和.so在/usr/local/lib目录下。
然后将需要使用的库sudo cp至/usr/lib 。不然在执行代码时,ldd会提示找不到.so文件。
./main: error while loading shared libraries: libboost_serialization.so.1.52.0: cannot open shared object file: No such file or directory
二、使用boost库:
代码如下:
#include <iostream>
#include <sstream>
#include <string>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <vector>
#include <boost/serialization/vector.hpp>
#include <fstream>
using namespace std;
using namespace boost::serialization;
using namespace boost::archive;
int main()
{
vector<int> v;
for(int i=0;i!=12;i++)
{
v.push_back(i);
}
ofstream os("file",ios::out);
text_oarchive oa(os);
oa<<v;
os.close();
ifstream is("file",ios::in);
text_iarchive ia(is);
vector<int> vr;
ia>>vr;
is.close();
for(size_t i=0;i!=vr.size();++i)
cout<<vr[i]<<endl;
return 0;
}
luoxiongwei@luoxiongwei:~$ g++ -o main testboost.cpp -L/usr/local/lib -lboost_serialization
执行./main
上述代码完成了vector容器的序列化和反序列化。