Boost庫是一個可移植、提供源代碼的C++庫,作為標准庫的后備,是C++標准化進程的開發引擎之一。 Boost庫由C++標准委員會庫工作組成員發起,其中有些內容有望成為下一代C++標准庫內容。在C++社區中影響甚大,是不折不扣的“准”標准庫。Boost由於其對跨平台的強調,對標准C++的強調,與編寫平台無關。大部分boost庫功能的使用只需包括相應頭文件即可,少數(如正則表達式庫,文件系統庫等)需要鏈接庫。但Boost中也有很多是實驗性質的東西,在實際的開發中實用需要謹慎。
在Android的externa庫中也可以看到boost庫,不過那個只有一部分,並不是完整的Boost。點擊瀏覽
1. 在github上有位大牛寫了個NDK編譯Boost的腳本,非常傻瓜化:點擊瀏覽
在項目主頁上可以看到該腳本的版本支持情況。
PS: 沒有r9版的信息,但是我測試r9d編譯成功,r10編譯失敗。
2. 檢出項目,或者直接下載壓縮包
$ git clone https://github.com/MysticTreeGames/Boost-for-Android.git
項目非常小,進入項目后發現只有5個文件,並沒有Boost庫,這是因為Boost庫是根據編譯時按選擇的版本下載的。
$ cd Boost-for-Android $ ls
查看幫助可以看到一些編譯選項,解釋很詳細,這里不羅嗦。
$ ./build-android.sh --help
3. 開始編譯,當前環境:virtualbox + xubuntu14.04-x86_64
3.1 android大部分為32位,64位android才剛出不久,所以在64位linux環境下使用ndk需要安裝一些庫:
$ 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