日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux boost教程,Linux上安装使用Boost入门指导

發(fā)布時間:2025/3/8 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux boost教程,Linux上安装使用Boost入门指导 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

獲得boost

boost分布

只需要頭文件的庫

使用boost建立一個簡單的程序

準(zhǔn)備使用boost二進(jìn)制文件庫

把你的程序鏈接到boost庫

1.獲得boost

解壓

2.boost分布

boost_1_46_1.........................boost根目錄

boost/.....................................所有boost頭文件

libs/........................................Tests,.cpps,docs等的庫文件

注意:

(1)boost根目錄(通常是/usr/local/boost_1_46_1)想到$BOOST_ROOT變量中

(2)編譯程序時如果用到boost庫,需要指定頭文件路徑-I$BOOST_ROOT

(3)因為所有頭文件都在boost文件夾下,并且頭文件都是hpp后綴,所#include形如:

#include

3.只需要頭文件的庫

絕大多數(shù)的boost庫都是header-noly的:它們完全由包含模板和inline函數(shù)的頭文件組成,不需要單獨編譯和二進(jìn)制庫文件,也不需要鏈接時特別對待。

只有下面的boost庫必需單獨built:

Boost.Filesystem

Boost.GraphParallel

Boost.IOStreams

Boost.MPI

Boost.ProgramOptions

Boost.Python (see the Boost.Python build documentation before building and installing it)

Boost.Regex

Boost.Serialization

Boost.Signals

Boost.System

Boost.Thread

Boost.Wave

下面這些單獨built是可選(optional)的:

Boost.DateTime  Boost.Graph  Boost.Math  Boost.Random  Boost.Test

4.使用boost建立簡單的程序

下面的程序(example.cc)只用到header-only庫。它是從標(biāo)準(zhǔn)輸入中讀入一串整數(shù),使用Boost.Lambda每個數(shù)乘以3后輸出。

#include

#include

#include

#include

int main()

{

using namespace boost::lambda;

typedef std::istream_iterator in;

std::for_each(

in(std::cin), in(), std::cout << (_1 * 3) <

}

編譯:g++? -I$BOOST_ROOT? example.cc? -o? example

運(yùn)行:echo 1 2 3 | ./example

5.準(zhǔn)備使用boost二進(jìn)制庫

如果你的程序用到需要單獨編譯的boost庫,你需要首先獲得這些二進(jìn)制庫文件。

5.1編譯安裝所有二進(jìn)制庫文件

cd $BOOST_ROOT

./bootstrap.sh? --help

./bootstrap.sh? --prefix=/usr/local    ##其實默認(rèn)情況下prefix的值就是/usr/local

此時生成了bjam可執(zhí)行文件,這個東西就是用來編譯boost庫的。

./bjam? install

5.2僅安裝指定的二進(jìn)制庫文件

下面均使用系統(tǒng)默認(rèn)的編譯器,即Linux上的gcc。

5.2.1安裝Boost.build

Boost.Build是一個用于開發(fā)、測試、安裝軟件的基于文本的系統(tǒng)。Boost.Build的生成安裝步驟:

(1)cd $BOOST_ROOT/tools/build/v2

(2)./bootstrap.sh

(3)./bjam? install? --prefix=/usr/local/      ##prefix是Boost.Build安裝位置

(4)把prefix/bin放到PATH中          ##當(dāng)然/usr/local/bin已經(jīng)PATH中了

5.2.2調(diào)用bjam時不指定toolset則使用系統(tǒng)默認(rèn)的編譯器。如果你的Linux上裝了不同版本的gcc,則使用toolset選項時可以指定版本號:toolset=gcc-4.4

5.2.3指定build路徑,通過--build-dir=/path選項,不指定時默認(rèn)在當(dāng)前路徑下創(chuàng)建bin.v2文件夾,把生成的文件放在其內(nèi)。

5.2.4調(diào)用bjam

cd? $BOOST_ROOT

bjam? --build-dir=./build-boost? toolset=gcc?? stage

上面的命令將創(chuàng)建static and shared non-debug multi-threaded variants of the libraries.如果要建立所有的variants,請使用"--build-type=complete"選項。

所有的boost二進(jìn)制庫文件將放在stage/lib/下,如果你要另外指定路徑,請使用“--stagedir=directory"選項。

注意為節(jié)省build時間,你可能需要少build一些庫文件:

查看庫文件名稱  --show-libraries

限制build哪些庫  --with-libraryname或者--without-libraryname

選擇特定的build variant  adding release or debug to the command line

友情提示:Boost.Build會生成很多報告輸出,如果你能保證建立過程不出錯誤,你可以禁止這些輸出以節(jié)省時間。方法:在命令后追加”>build.log? 2>&1"

6.把你的程序鏈接到boost庫

下面的程序是從郵件中抽取“主題”內(nèi)容,它用到了Boost.Regex庫,這個庫是需要單獨編譯的。

#include

#include

#include

int main()

{

std::string line;

boost::regex pat("^Subject: (Re: |Aw: )*(.*)" );

while (std::cin)

{

std::getline(std::cin, line);

boost::smatch matches;

if (boost::regex_match(line, matches, pat))

std::cout << matches[2] << std::endl;

}

}

編譯:

方法A:g++? -I$BOOST_ROOT? example.cc -o example? $BOOST_ROOT/stage/lib/ -lboost_regex.a

方法B:g++? -I$BOOST_ROOT? example.cc -o example? -L$BOOST_ROOT/stage/lib/ -lboost_regex

當(dāng)你要使用多個庫源于一個路徑時使用方法B就省力了(paid off)。注意到方法B中并沒有指定.a(靜態(tài)庫)還中.so(動態(tài)庫),系統(tǒng)將自動地幫你選擇使用靜態(tài)庫還是動態(tài)庫,當(dāng)然你可以通過選項“-static"顯示地指定。

6.1庫文件的命名方式

拿libboost_regex-gcc34-mt-d-1_36來說:

lib....................................通用前綴

boost_regex.....................庫名

gcc34...............................編譯時使用的toolset是gcc-3.4

mt...................................編譯時是支持多線程的

d/s/g/y/p..........................ABI tag

1_36................................Tag version

6.2運(yùn)行我們的程序

首先新建一個文本文件mail.txt

To: George Shmidlap

From: Rita Marlowe

Subject: Will Success Spoil Rock Hunter?

---

See subject.

如果我們的程序鏈接到了一個共享動態(tài)庫,我們需要讓系統(tǒng)知道到哪兒去加載它。請看我的~/.bashrc文件:

#boost

export BOOST_ROOT="/usr/local/boost_1_46_1"

export LD_LIBRARY_PATH="/usr/local/boost_1_46_1/stage/lib:$LD_LIBRARY_PATH"

運(yùn)行程序:./example?

應(yīng)該輸出

Will Success Spoil Rock Hunter?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的linux boost教程,Linux上安装使用Boost入门指导的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。