ndk 編譯 boost 庫,支持serialization

      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

相關文章
相關標籤/搜索