部分引自: https://blog.csdn.net/this_capslock/article/details/47170313
1. 下載boost安裝包並解壓縮
到http://www.boost.org/下載boost的安裝包,以boost_1_58_0.tar.gz為例
下載完成后進行解壓縮:
tar zxvf boost_1_58_0.tar.gz
2.設置編譯器和所選庫
先進入解壓縮后的目錄:
cd boost_1_58_0
然后運行bootstrap.sh腳本並設置相關參數:
./bootstrap.sh --with-libraries=all --with-toolset=gcc
--with-libraries指定編譯哪些boost庫,all的話就是全部編譯,只想編譯部分庫的話就把庫的名稱寫上,之間用 , 號分隔即可
--with-toolset指定編譯時使用哪種編譯器,Linux下使用gcc即可,如果系統中安裝了多個版本的gcc,在這里可以指定gcc的版本,比如--with-toolset=gcc-4.4
3.編譯boost
執行以下命令開始進行boost的編譯:
./b2 toolset=gcc
編譯的時間大概要10多分鍾,耐心等待,結束后會有以下提示:
...failed updating 60 targets...
...skipped 21 targets...
...updated 663 targets...
4.安裝boost
最后執行以下命令開始安裝boost:
./b2 install --prefix=/home/zhangyw/boost/boostlib
5.添加環境變量
vim ~/.bashrc
文件末尾添加:
# Boost
export BOOST_INCLUDE=/home/zhangyw/boost/boostlib/include/
export BOOST_LIB=/home/zhangyw/boost/boostlib/lib
6.boost使用測試
以boost_thread為例,測試剛安裝完的boost庫是否能正確使用,測試代碼如下:
1 #include <boost/thread/thread.hpp> //包含boost頭文件 2 #include <iostream> 3 #include <cstdlib> 4 using namespace std; 5 6 volatile bool isRuning = true; 7 8 void func1() 9 { 10 static int cnt1 = 0; 11 while(isRuning) 12 { 13 cout << "func1:" << cnt1++ << endl; 14 sleep(1); 15 } 16 } 17 18 void func2() 19 { 20 static int cnt2 = 0; 21 while(isRuning) 22 { 23 cout << "\tfunc2:" << cnt2++ << endl; 24 sleep(2); 25 } 26 } 27 28 int main() 29 { 30 boost::thread thread1(&func1); 31 boost::thread thread2(&func2); 32 33 system("read"); 34 isRuning = false; 35 36 thread2.join(); 37 thread1.join(); 38 cout << "exit" << endl; 39 return 0; 40 }
7.編譯方法
g++ boostTest.cpp -g -o boostTest -lboost_thread