linux之安裝boost環境
阿新 • • 發佈:2018-11-06
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