Boost庫是一個可移植、提供源代碼的C++庫,做爲標準庫的後備,是C++標準化進程的開發引擎之一。 Boost庫由C++標準委員會庫工做組成員發起,其中有些內容有望成爲下一代C++標準庫內容。在C++社區中影響甚大,是徹徹底底的「準」標準庫。Boost因爲其對跨平臺的強調,對標準C++的強調,與編寫平臺無關。大部分boost庫功能的使用只需包括相應頭文件便可,少數(如正則表達式庫,文件系統庫等)須要連接庫。但Boost中也有不少是實驗性質的東西,在實際的開發中實用須要謹慎。linux
在Android的externa庫中也能夠看到boost庫,不過那個只有一部分,並非完整的Boost。點擊瀏覽android
1. 在github上有位大牛寫了個NDK編譯Boost的腳本,很是傻瓜化:點擊瀏覽git
在項目主頁上能夠看到該腳本的版本支持狀況。github
PS: 沒有r9版的信息,可是我測試r9d編譯成功,r10編譯失敗。正則表達式
2. 檢出項目,或者直接下載壓縮包shell
$ git clone https://github.com/MysticTreeGames/Boost-for-Android.git
項目很是小,進入項目後發現只有5個文件,並無Boost庫,這是由於Boost庫是根據編譯時按選擇的版本下載的。ubuntu
$ cd Boost-for-Android $ ls
查看幫助能夠看到一些編譯選項,解釋很詳細,這裏不羅嗦。less
$ ./build-android.sh --help
3. 開始編譯,當前環境:virtualbox + xubuntu14.04-x86_64測試
3.1 android大部分爲32位,64位android纔剛出不久,因此在64位linux環境下使用ndk須要安裝一些庫:ui
$ sudo apt-get install ia32-libs
3.2 這裏推薦你們使用 virtualbox + xubuntu + xshell 的環境
進入vbox安裝目錄
D:\>cd Program_Files\VirtualBox
在後臺啓動xubuntu
D:\Program_Files\VirtualBox>vboxmanage startvm xubuntu-14.04 -type headless
關閉正在運行的xnbuntu,固然,關機應該使用 $sudo shutdown -h now
D:\Program_Files\VirtualBox>vboxmanage stopvm xubuntu-14.04
3.3 確保環境都配好,而後開始運行編譯腳本,這裏選擇1.49.0版本,編譯到 install 目錄:
$ ./build-android.sh --boost=1.49.0 --prefix=install
速度略慢,耐心等待,已經下載好的包,再次編譯時不會重複下載,這腳本真心很傻瓜,虧我還寫這麼多!!!!
下載完後再通過漫長的等待,就編譯完了。。。。。
4. 使用Crystax第三方NDK編譯Boost
4.1 對於使用Boost中的序列化功能的請注意了,官方ndk不支持boost-serialization庫,緣由是ndk不支持wchar_t,因此就須要用到第三方NDK crystax 了。
crystax下載地址,點擊瀏覽
根據Boost-for-Android的版本支持狀況,這裏選擇crystax-r7來編譯boost-1.49.0,可是你會發現有好多crystax-r7,該用哪個呢?????
打開build-android.sh腳本,搜索「crystax」,會發現只有「7-crystax-5.beta3」,那麼咱們就使用android-ndk-r7-crystax-5.beta3-linux-x86.tar.bz2。
$ vi ./build-android.sh
下載完crystax後,修改path,從新編譯。
5. 在項目中使用crystax編譯的Boost須要注意的事項:
1. 修改Application.mk中的APP_STL參數:
APP_STL:=gnustl_static
博客不在線,有問題直接聯繫QQ: 783713515