版权声明:本文为博主原创文章,未经博主允许不得转载。 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