ndk 編譯 boost 庫,支持serialization


      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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM