linux下編譯boost

來源:互聯網
上載者:User
文章目錄
  • 擷取boost庫
  • 編譯安裝

原文出處:http://blog.ehomy.net/archives/148

 

工作平台:Fedora 12

擷取boost庫

Linux下官方提供了兩個壓縮版本:
boost_1_43_0.tar.bz2
boost_1_43_0.tar.gz

找到其中一個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

進入解壓目錄
cd boost_1_43_0

編譯安裝

使用下面的命令建立boost自己的編譯工具bjam(目的是保證Boost在任何平台上都能用bjam編譯),類似於GNU Make。
./bootstrap.sh --prefix=/home/usrname/boost_1_43_0/boost_install

boost將被安裝到/boost_install目錄下,不知名prefix將預設安裝到/usr/local/include和/usr/local/lib下。


建議先查看下協助文檔,瞭解些預設選項,命令為
./bjam –help

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

常用選項(Options)和屬性(Properties)的說明,一般帶有–首碼的關鍵詞為option,沒有的則為property。


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

–build-type=minimal|complete
–build-type=minimal為預設值,此時在Linux下只編譯產生release版的動態連結C運行庫(C++標準庫)的多線程靜態庫和動態庫。
–build-type=complete,在Unix/linux下要編譯多個變體(debug或release,多線程或單線程,靜態庫或動態庫,靜態連結或動態連結C運行庫/C++標準庫)。不建議全部編譯,費時還費空間,提倡按需編譯。

–layout=versioned|tagged|system
決定需要編譯的庫名及標頭檔的地址目錄名的建置原則。預設Windows下–layout=versioned,Linux下–layout=system。
當同時編譯多個版本時,最好設定–layout=versioned或–layout=tagged,否則編譯多半會失敗,原因是有的版本同時編譯若不指定命名策略,可能在輸出到指定目錄的時候造成命名衝突。
註:–build-type=complete時,不需要設定此屬性。但指定variant=debug,release等屬性時,須確保–layout=versioned或–layout=tagged。

–build-dir=DIR
指定存放編譯過程中產生的中間檔案,目標檔案等其他檔案的目錄,預設在./bin.v2。

–with-
建立和安裝指定的庫
–without-
不對指定的庫進行建立和安裝,預設建立所有的庫

安裝:關鍵詞 install 或 stage
./bjam install
install會安裝標頭檔和庫檔案到相應指定目錄,標頭檔安裝到/usr/local/include下,庫檔案安裝到/usr/local/lib下。具體指定安裝目錄見./bjam –help。
./bjam stage
stage說起來只能說是收集產生的庫檔案到一個目錄下,通常預設就在./stage下。

註:
install 和 stage 貌似不能同時使用,中間會卡住。
若編譯過程中未指定install或stage,則產生的目標庫檔案只存在於–build-dir所指的目錄中,預設為./bin.v2。考慮到此,若無需將標頭檔和庫檔案安裝,則推薦使用stage關鍵字。

下面是屬性:
toolset=toolset
指定編譯器,預設自動檢測,安裝了多個編譯器的時候可以使用此屬性。
variant=debug|release
指定編譯debug或release版本。
link=static|shared
指定建立靜態庫或動態庫
runtime-link=static|shared
指定建立的庫是靜態連結還是動態連結到C運行庫(或C++標準庫),這個選項需依據–link的類型,不同的編譯器允許的連結策略不一樣,比如在GCC下,在產生動態庫(–link=shared)時,就不允許進行靜態連結到C運行庫(或C++標準庫)。
threading=single|multi
指定建立多線程或單線程的版本庫。

屬性可同時設定,如下兩種方式,為了避免名字衝突,建議採取propery=value的格式:
./bjam variant=debug,release stage

./bjam variant=debug variant=release
這兩種方式都可以。

最後執行的建立命令:
./bjam --with-filesystem --layout=tagged variant=release link=static threading=single stage

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.