溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux系統(tǒng)是怎樣編譯boost

發(fā)布時(shí)間:2022-01-26 10:26:17 來(lái)源:億速云 閱讀:141 作者:kk 欄目:開(kāi)發(fā)技術(shù)

本篇文章為大家展示了Linux系統(tǒng)是怎樣編譯boost,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

boost庫(kù)是一個(gè)可移植、提供源代碼的c++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是c++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一。

Boost簡(jiǎn)介:

  • boost庫(kù)是一個(gè)可移植、提供源代碼的c++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是c++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一。

  • boost庫(kù)由c++標(biāo)準(zhǔn)委員會(huì)庫(kù)工作組成員發(fā)起,其中有些內(nèi)容有望成為下一代c++標(biāo)準(zhǔn)庫(kù)內(nèi)容。 在c++社區(qū)中影響甚大,是不折不扣的“準(zhǔn)”標(biāo)準(zhǔn)庫(kù)。

  • boost由于其對(duì)跨平臺(tái)的強(qiáng)調(diào),對(duì)標(biāo)準(zhǔn)c++的強(qiáng)調(diào),與編寫平臺(tái)無(wú)關(guān)。

Linux系統(tǒng)編譯Boost具體方法:

Boost的編譯使用的不是已經(jīng)成為公認(rèn)標(biāo)準(zhǔn)的make,而是專門為Boost開(kāi)發(fā)的工具bjam(boost jam)**。

1.  ./bootstrap.sh  生成bjam

2.  ./bjam –with-filesystem –layout=tagged variant=release link=static threading=single stage 執(zhí)行的創(chuàng)建命令(不用全部編譯)

\3.   ./bjam install 安裝

獲取boost庫(kù)

Linux下官方提供了兩個(gè)壓縮版本:boost_1_43_0.tar.bz2boost_1_43_0.tar.gz

找到其中一個(gè)Unix/Linux包的直接下載地址,然后輸入下列命令

sudo wget http://downloads.sourceforge.net/project/boost/boost/1.43.0/boost_1_43_0.tar.gz?use_mirror=cdnetworks-kr-1

解壓tar -zxvf boost_1.43.0.tar.gz

進(jìn)入解壓目錄cd boost_1_43_0

編譯安裝

使用下面的命令創(chuàng)建boost自己的編譯工具bjam(目的是保證Boost在任何平臺(tái)上都能用bjam編譯),類似于GNU Make。./bootstrap.sh –prefix=/home/usrname/boost_1_43_0/boost_install

boost將被安裝到/boost_install目錄下,不知名prefix將默認(rèn)安裝到/usr/local/include和/usr/local/lib下。

建議先查看下幫助文檔,了解些默認(rèn)選項(xiàng),命令為./bjam –help

.bjam命令的格式為:bjam [options] [properties] [targets]

常用選項(xiàng)(Options)和屬性(Properties)的說(shuō)明,一般帶有–前綴的關(guān)鍵詞為option,沒(méi)有的則為property。

–show-libraries顯示需要編譯才能使用的庫(kù)列表

–build-type=minimal|complete–build-type=minimal為默認(rèn)值,此時(shí)在Linux下只編譯生成release版的動(dòng)態(tài)鏈接C運(yùn)行庫(kù)(C++標(biāo)準(zhǔn)庫(kù))的多線程靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)。–build-type=complete,在Unix/linux下要編譯多個(gè)變體(debug或release,多線程或單線程,靜態(tài)庫(kù)或動(dòng)態(tài)庫(kù),靜態(tài)鏈接或動(dòng)態(tài)鏈接C運(yùn)行庫(kù)/C++標(biāo)準(zhǔn)庫(kù))。不建議全部編譯,費(fèi)時(shí)還費(fèi)空間,提倡按需編譯。

–layout=versioned|tagged|system決定需要編譯的庫(kù)名及頭文件的地址目錄名的生成策略。默認(rèn)Windows下–layout=versioned,Linux下–layout=system。當(dāng)同時(shí)編譯多個(gè)版本時(shí),最好設(shè)置–layout=versioned或–layout=tagged,否則編譯多半會(huì)失敗,原因是有的版本同時(shí)編譯若不指定命名策略,可能在輸出到指定目錄的時(shí)候造成命名沖突。注:–build-type=complete時(shí),不需要設(shè)置此屬性。但指定variant=debug,release等屬性時(shí),須確保–layout=versioned或–layout=tagged。

–build-dir=DIR指定存放編譯過(guò)程中生成的中間文件,目標(biāo)文件等其他文件的目錄,默認(rèn)在./bin.v2。

–with-創(chuàng)建和安裝指定的庫(kù)–without-不對(duì)指定的庫(kù)進(jìn)行創(chuàng)建和安裝,默認(rèn)創(chuàng)建所有的庫(kù)

安裝:關(guān)鍵詞 install 或 stage./bjam installinstall會(huì)安裝頭文件和庫(kù)文件到相應(yīng)指定目錄,頭文件安裝到/usr/local/include下,庫(kù)文件安裝到/usr/local/lib下。具體指定安裝目錄見(jiàn)./bjam –help。./bjam stagestage說(shuō)起來(lái)只能說(shuō)是收集生成的庫(kù)文件到一個(gè)目錄下,通常默認(rèn)就在./stage下。

注:install 和 stage 貌似不能同時(shí)使用,中間會(huì)卡住。若編譯過(guò)程中未指定install或stage,則生成的目標(biāo)庫(kù)文件只存在于–build-dir所指的目錄中,默認(rèn)為./bin.v2??紤]到此,若無(wú)需將頭文件和庫(kù)文件安裝,則推薦使用stage關(guān)鍵字。

下面是屬性:toolset=toolset指定編譯器,默認(rèn)自動(dòng)檢測(cè),安裝了多個(gè)編譯器的時(shí)候可以使用此屬性。variant=debug|release指定編譯debug或release版本。link=static|shared指定創(chuàng)建靜態(tài)庫(kù)或動(dòng)態(tài)庫(kù)runtime-link=static|shared指定創(chuàng)建的庫(kù)是靜態(tài)鏈接還是動(dòng)態(tài)鏈接到C運(yùn)行庫(kù)(或C++標(biāo)準(zhǔn)庫(kù)),這個(gè)選項(xiàng)需依據(jù)–link的類型,不同的編譯器允許的鏈接策略不一樣,比如在GCC下,在生成動(dòng)態(tài)庫(kù)(–link=shared)時(shí),就不允許進(jìn)行靜態(tài)鏈接到C運(yùn)行庫(kù)(或C++標(biāo)準(zhǔn)庫(kù))。threading=single|multi指定創(chuàng)建多線程或單線程的版本庫(kù)。

屬性可同時(shí)設(shè)置,如下兩種方式,為了避免名字沖突,建議采取propery=value的格式:./bjam variant=debug,release stage./bjam variant=debug variant=release這兩種方式都可以。

*最后執(zhí)行的創(chuàng)建命令:*./bjam –with-filesystem –layout=tagged variant=release link=static threading=single stage

*安裝*

# ./bjam install

將生成的庫(kù)默認(rèn)安裝到/urs/local/lib目錄。

什么是Linux系統(tǒng)

Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。

上述內(nèi)容就是Linux系統(tǒng)是怎樣編譯boost,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI