Linux如何編譯和安裝boost庫
1.下載boost安裝包并解壓縮
到https://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腳本并設置相關參數(shù):
./bootstrap.sh --with-libraries=all --with-toolset=gcc
--with-libraries
指定編譯哪些boost庫,all的話就是全部編譯,只想編譯部分庫的話就把庫的名稱寫上,之間用 , 號分隔即可
可指定的庫有以下幾種:
庫名 | 說明 |
---|---|
atomic | |
chrono | |
context | |
coroutine | |
date_time | |
exception | |
filesystem | |
graph | 圖組件和算法 |
graph_parallel | |
iostreams | |
locale | |
log | |
math | |
mpi | 用模板實現(xiàn)的元編程框架 |
program_options | |
python | 把C++類和函數(shù)映射到Python之中 |
random | |
regex | 正則表達式庫 |
serialization | |
signals | |
system | |
test | |
thread | 可移植的C++多線程庫 |
timer | |
wave |
--with-toolset指定編譯時使用哪種編譯器,Linux下使用gcc即可,如果系統(tǒng)中安裝了多個版本的gcc,在這里可以指定gcc的版本,比如--with-toolset=gcc-4.4
命令執(zhí)行完成后看到顯示如下即為成功:
Building Boost.Build engine with toolset gcc... tools/build/src/engine/bin.linuxx86_64/b2 Detecting Python version... 2.6 Detecting Python root... /usr Unicode/ICU support for Boost.Regex?... not found. 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: http://www.boost.org/more/getting_started/unix-variants.html - Boost.Build documentation: http://www.boost.org/build/doc/html/index.html
3.編譯boost
執(zhí)行以下命令開始進行boost的編譯:
./b2 toolset=gcc
編譯的時間大概要10多分鐘,耐心等待,結束后會有以下提示:
...failed updating 60 targets... ...skipped 21 targets... ...updated 663 targets...
4.安裝boost
最后執(zhí)行以下命令開始安裝boost:
./b2 install --prefix=/usr
--prefix=/usr用來指定boost的安裝目錄,不加此參數(shù)的話默認的頭文件在/usr/local/include/boost目錄下,庫文件在/usr/local/lib/目錄下。
這里把安裝目錄指定為--prefix=/usr則boost會直接安裝到系統(tǒng)頭文件目錄和庫文件目錄下,可以省略配置環(huán)境變量。
安裝完畢后會有以下提示:
...failed updating 60 targets... ...skipped 21 targets... ...updated 11593 targets...
最后需要注意,如果安裝后想馬上使用boost庫進行編譯,還需要執(zhí)行一下這個命令:
ldconfig
更新一下系統(tǒng)的動態(tài)鏈接庫
5.boost使用測試
以boost_thread為例,測試剛安裝完的boost庫是否能正確使用,測試代碼如下:
#include <boost/thread/thread.hpp> //包含boost頭文件 #include <iostream> #include <cstdlib> using namespace std; volatile bool isRuning = true; void func1() { static int cnt1 = 0; while(isRuning) { cout << "func1:" << cnt1++ << endl; sleep(1); } } void func2() { static int cnt2 = 0; while(isRuning) { cout << "\tfunc2:" << cnt2++ << endl; sleep(2); } } int main() { boost::thread thread1(&func1); boost::thread thread2(&func2); system("read"); isRuning = false; thread2.join(); thread1.join(); cout << "exit" << endl; return 0; }
在編譯程序時,需要加入對boost_thread庫的引用:
g++ main.cpp -g -o main -lboost_thread
如果boost庫的安裝位置不是在系統(tǒng)目錄下,則還需要在編譯時加上-I和-L指定boost頭文件和庫文件的位置
編譯成功后運行程序,利用boost實現(xiàn)的多線程任務正確運行:
func1: func2:00 func1:1 func2:1 func1:2 func1:3 func2:2 func1:4 func1:5 func2:3 func1:6 func1:7 func2:4 func1:8 func1:9 func2:5 func1:10 func1:11 func2:6 func1:12 func1:13 func2:7 func1:14 func1:15 func2:8 func1:16 exit
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Ubuntu 17.04系統(tǒng)下源碼編譯安裝opencv的步驟詳解
這篇文章主要給大家介紹了在Ubuntu 17.04系統(tǒng)下源碼編譯安裝opencv的相關資料,文中將一步步的步驟介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。2017-08-08CentOS(Linux)下的apache服務器配置與管理方法分享
CentOS(Linux)下的apache服務器配置與管理方法分享,需要的朋友可以參考下。2011-04-04Linux系統(tǒng)修改環(huán)境變量的常用方法
這篇文章主要給大家介紹了Linux系統(tǒng)修改環(huán)境變量的常用方法,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-02-02基于CentOS的Hadoop分布式環(huán)境的搭建開發(fā)
本篇文章介紹了基于CentOS的Hadoop分布式環(huán)境的搭建開發(fā),有興趣的可以了解一下。2016-11-11在 Ubuntu 16.04 為 Nginx 服務器安裝 LEMP 環(huán)境(MariaDB,PHP 7 并支持 HTTP
LEMP 是個縮寫,代表一組軟件包(L:Linux OS,E:Nginx 網(wǎng)絡服務器,M:MySQL/MariaDB 數(shù)據(jù)庫和 P:PHP 服務端動態(tài)編程語言),它被用來搭建動態(tài)的網(wǎng)絡應用和網(wǎng)頁2016-09-09Linux?服務器上配置基于SSH?密鑰的身份驗證及使用方法
SSH是一種加密協(xié)議,用于管理和與服務器通信,在使用?Linux?服務器時,您經(jīng)常會花費大量時間在通過?SSH?連接到服務器的終端會話中,這篇文章主要介紹了Linux?服務器上配置基于SSH?密鑰的身份驗證及使用方法,需要的朋友可以參考下2024-04-04