linux/mac平臺上編譯安裝boost庫
環境:Ubuntu LTS 10.04, 64bit
GCC版本:
#gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
適用版本(適用版本只用於記錄本次編譯測試所使用的版本,不代表只能適用此版本):boost_1_49_0.tar.gz
說明:Boost的編譯系統是使用其自帶的bjam工具,所以和一般的編譯的過程不太一樣。
編譯過程:
1. 解壓、建立prefix目錄
- tar zxvf boost_1_49_0.tar.gz
- mv boost_1_49_0 gcc_boost_1_49_0
- cd gcc_boost_1_49_0
- mkdir prefix
Boost資料夾,這裡面是Boost的原始碼。其餘的libs、doc、tools、more等等裡面都主要是文件,當然,tools裡面可能還有b2(bjam,boost的編譯工具)的原始碼。
主目錄下的index.html就可以開啟boost的文件,裡面可以連結到上面各個文件中。
PS:這裡的boost文件,並非編譯後的boost庫的API文件什麼的,由於Boost專案比較大,所以提供了很多文件,包括介紹如何編譯等等的。總之,這點很好。
bootstrap.sh,這個指令碼用於進行一些配置,事實上,它還會先編譯bjam。總之,這個指令碼用於編譯bjam工具以及進行一些編譯前的配置。
3. 配置
- ./bootstrap.sh
- Building Boost.Build engine with toolset gcc... tools/build/v2/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/boost-build2/doc/html/index.html
會生成一個project-config.jam檔案,這個檔案可以用於對bjam進行一些配置。當然,還有一些其它可以配置的地方。另外,通過命令列配置也是可以的(PS:個人喜歡用命令列去配置)。
4. 編譯
- ./bjam --prefix=./prefix/ install
bjam的使用:
關於bjam的文件,可以參考:boost_1_49_0/doc/html/bbv2/overview.html,由於bjam可以有幾種配置的地方,下面的內容只說明如何在命令列對bjam編譯進行配置。
1. bjam的呼叫(boost_1_49_0/doc/html/bbv2/overview.html#bbv2.overview.invocation)
要呼叫Boost.build來編譯,只需要使用bjam命令即可。bjam可以接受三種類型的tokens,而且順序不限。分別是:選項(options)、屬性(properties)、目標(target)。
PS:由於對於一般的命令列,可執行程式後面的部分,有時候我們都稱之為“選項”。這裡,將其分為了三個型別,那麼下面的內容,提到選項,就是表示bjam的options的概念。
2. 選項(boost_1_49_0/doc/html/bbv2/overview.html#bbv2.overview.invocation.options):
選項一般以破折號(dash)或者雙破折號開始。下面是一些標準選項,但是,每個不同的工程可以增加額外的一些選項:
--help
幫助
--clean
清除所有targets。與make中的clean不同的是,可以同時使用--clean和target names來清除指定的目標。
--clean-all
清除
--build-dir
指定編譯的臨時檔案的存放目錄
--version
顯示版本
-a
使得所有檔案重新編譯
-n
不執行命令,只是顯示之(用於除錯自己的設定選項是否被正確使用是比較合適的。)
-q
在遇到第一個錯誤就停止,而不是繼續編譯其它不依賴這個錯誤的targets
-j N
並行執行命令數
--debug-configuration
--debug-building
--debug-generators
--ignore-config
-d0
-d N
-d +N
都和debug(編譯的debug)資訊有關。用於控制輸出哪些資訊。
-o file
將更新操作寫入指定的檔案,而不執行它們。
-s var=value
為jam設定全域性變數。
3. 屬性(boost_1_49_0/doc/html/bbv2/overview.html#bbv2.overview.invocation.properties):
屬性的形式為“feature=value”。
下面是常見的features(完整的features參考相關文件):
toolset配置,可以參考:pl_Boost/boost_1_49_0/doc/html/bbv2/reference.html#bbv2.reference.tools.compilers
4. 目標(boost_1_49_0/doc/html/bbv2/overview.html#bbv2.overview.invocation.targets):
和make中的target的理解應該是類似的,就是指定要編譯哪些target了,所以和“輸入”配置檔案有關。