Boost庫是為C++語言標准庫提供擴展的一些C++程序庫的總稱,由Boost社區組織開發、維護。在C++的地位感覺可以和Spring在Java中相比。 |
boost向來有准標准庫之稱,很多新特性例如智能指針等都是先在boost中實現,后來被吸收到標准庫之中。而且boost實現了日志、算法、日期、地理、數學、線程協程等各種實用工具,所以如果要學習C++,boost是必須要學習的一個東西。
下面記錄在Linux下編譯安裝boost1.69庫的過程步驟,希望對大家有用。
測試平台
Linux版本:Ubuntu 18.04 LTS
Boost版本:1.69.0
1、安裝依賴庫文件
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ sudo apt-get install libbz2-dev [sudo] linuxidc 的密碼: 正在讀取軟件包列表... 完成 正在分析軟件包的依賴關系樹 正在讀取狀態信息... 完成 將會同時安裝下列軟件: bzip2-doc 下列【新】軟件包將被安裝: bzip2-doc libbz2-dev 升級了 0 個軟件包,新安裝了 2 個軟件包,要卸載 0 個軟件包,有 218 個軟件包未被升級。 需要下載 324 kB 的歸檔。 解壓縮后會消耗 513 kB 的額外空間。 您希望繼續執行嗎? [Y/n] Y
#安裝mpi庫
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ sudo apt-get install libicu-dev 正在讀取軟件包列表... 完成 正在分析軟件包的依賴關系樹 正在讀取狀態信息... 完成 將會同時安裝下列軟件: gir1.2-harfbuzz-0.0 icu-devtools libglib2.0-dev libglib2.0-dev-bin libgraphite2-dev libharfbuzz-dev libharfbuzz-gobject0 libicu-le-hb-dev libicu-le-hb0 libiculx60 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 建議安裝: libglib2.0-doc libgraphite2-utils icu-doc 下列【新】軟件包將被安裝: gir1.2-harfbuzz-0.0 icu-devtools libglib2.0-dev libglib2.0-dev-bin libgraphite2-dev libharfbuzz-dev libharfbuzz-gobject0 libicu-dev libicu-le-hb-dev libicu-le-hb0 libiculx60 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 升級了 0 個軟件包,新安裝了 15 個軟件包,要卸載 0 個軟件包,有 218 個軟件包未被升級。 需要下載 11.8 MB 的歸檔。 解壓縮后會消耗 57.4 MB 的額外空間。 您希望繼續執行嗎? [Y/n] Y
#支持正則表達式的UNICODE字符集
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ sudo apt-get install Python-dev
#需要python的話
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -$ sudo apt-get install libbz2-dev
2、下載安裝包
https://sourceforge.net/projects/boost/files/boost/1.69.0/
此處我下載的是 boost1.69,0
解壓縮到一個目錄
3、cd 到該目錄
里面有個bootstrap.sh的腳本文件,運行這個腳本
運行腳本:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -/boost_1_69_0$ ./bootstrap.sh Building Boost.Build engine with toolset gcc... tools/build/src/engine/bin.linuxx86_64/b2 Detecting Python version... 2.7 Detecting Python root... /usr Unicode/ICU support for Boost.Regex?... /usr Generating Boost.Build configuration in project-config.jam... Bootstrapping is done. To build, run: ./b2 To adjust configuration, edit 'project-config.jam'. Further information: - Command line help: ./b2 --help - Getting started guide:
根據上圖提示,進行編譯操作。
4、開始編譯 boost
編譯要一點時間,出去跳跳繩吧,打打拳擊吧,輸入命令:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -/boost_1_69_0$ ./b2 Performing configuration checks - default address-model : 64-bit - default architecture : x86 Building the Boost C++ Libraries. - C++11 mutex : yes - lockfree boost::atomic_flag : yes - Boost.Config Feature Check: cxx11_auto_declarations : yes - Boost.Config Feature Check: cxx11_constexpr : yes - Boost.Config Feature Check: cxx11_defaulted_functions : yes - Boost.Config Feature Check: cxx11_final : yes - Boost.Config Feature Check: cxx11_hdr_mutex : yes - Boost.Config Feature Check: cxx11_hdr_tuple : yes - Boost.Config Feature Check: cxx11_lambdas : yes
編譯成功后的截圖如下:
5、開始安裝
將boost庫相關文件安裝至/usr/local。輸入命令:
sudo ./b2 --prefix=/usr/local/boost install
安裝好之后截圖:
將boost庫添加至環境變量。輸入命令:
gedit /etc/environment
向文件中增加如下路徑:
CPLUS_INCLUDE_PATH=/usr/local/boost/include LIBRARY_PATH=/usr/local/boost/lib
添加完成后,進行保存操作。
6、測試案例
(1)代碼編寫。輸入命令:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -/boost_1_69_0$ gedit linuxidc.com.Boost.cpp
打開編輯器,輸入以下代碼並保存:
#include <boost/date_time/gregorian/gregorian.hpp> #include <iostream> using namespace std; int main() { boost::gregorian::date d(boost::gregorian::day_clock::local_day()); cout << d.year()<<"." << d.month()<<"." <<d.day() <<endl; getchar(); return 0; }
(2)代碼 編譯。輸入命令:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -/boost_1_69_0$ g++ -I /usr/local/boost/include -L /usr/local/boost/lib linuxidc.com.Boost.cpp -o linuxidc.com
(3)執行程序。輸入命令:
linuxidc@linuxidc:~/www.linuxidc.com/Linux公社 -/boost_1_69_0$ ./linuxidc.com 2019.Mar.20
截圖如下
OK,搞定。