1. 程式人生 > >linux之安裝boost環境

linux之安裝boost環境


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