在Android編譯並使用boost

2021-06-17 00:58:30 字數 2596 閱讀 8416

在網上找了好多關於android如何編譯和使用boost的文章,不時過時,就是行不通。花了些時間研究了這個問題,所以整理如下。由於文筆有限,大家在使用過程有問題,歡迎多交流。

android ndk:android-ndk-r7-crystax-5.beta3(

boost for android :

工程目錄:/home/zzl/stream_prj/8_mobile_cli/

ndk及第三方庫目錄:/home/zzl/android/

一、編譯 boost for android

1 解壓縮android-ndk-r7-crystax-5.beta3.zip到/home/zzl/android, 並建立環境變數

export ndk_root=/home/zzl/android/android-ndk-r7-crystax-5.beta3

2 建立 ndk的 standalone 的編譯環境

mkdir /home/zzl/stream_prj/8_mobile_cli/arm-linux-androideabi-4.6.3

cd ~/android/android-ndk-r7-crystax-5.beta3/build/tools

./make-standalone-toolchain.sh --platform=android-14 --install-dir= /home/zzl/stream_prj/8_mobile_cli/arm-linux-androideabi-4.6.3 --ndk-dir=$ndk_root

3 定義環境變數

export android_sysroot=/home/zzl/stream_prj/8_mobile_cli/arm-linux-androideabi-4.6.3/sysroot

export cry_stl_lib_root=/home/zzl/android/android-ndk-r7-crystax-5.beta3/sources/cxx-stl/gnu-libstdc++/libs/armeabi/4.6.3/

4 解壓縮boost-for-android-master.zip到/home/zzl/android

cd /home/zzl/android/boost-for-android-master

./build-android.sh --boost=1.49.0 $ndk_root (對於ndkcrystax,由於boost-for-android目前最新只支援boost 1.49.0,所以指定這個版本)

6 定義幾個boost的環境變數

export android_boost_inc=/home/zzl/android/boost-for-android-master/build/include/boost-1_49

export android_boost_lib=/home/zzl/android/boost-for-android-master/build/lib

說明:

由於official ndk的stl對c++的rtti、exceptions有些限制,而boost庫又用到這些東東,所以才用 crystax. (曾經試用official ndk,未遂)

二、在ndk中使用boost庫

寫了乙個非常簡單的test.so

1 test.cpp**

#include

#include

#include

std::string add(const std::string& a, const std::string& b)

2 makefile

有幾點特別說明的地方(我花了不少時間在此),由於我是mpc工具生成makefile,檔案內容較多,在此省略其它無關**。

dynamicflags =-dandroid -d_exceptions

cppflags = $(picflags) $(genflags)-fexceptions -frtti-d_reentrant-i"$(android_boost_inc)"

ldflags = -l"."-l"$(android_boost_lib)" -l"$(android_sysroot)/usr/lib" -l"$(cry_stl_lib_root)" -fuse-ld=bfd

ldlibs =-l"supc++$(libsuffix)" -l"gnustl_static$(libsuffix)" -l"boost_thread-gcc-mt-1_49$(libsuffix)" -l"boost_system-gcc-mt-1_49$(libsuffix)"-ldl

VS2010編譯使用STLport與boost

win7下編譯stlport 5.2.1 與 boost 1 54 0的方法 一 編譯stlport 1 開啟vs2010的 visual studio command prompt 2010 工具 2 進入到stlport的解壓目錄,而且在該目錄下可以看到 configure.bat 3 cd 進...

在Windows上使用VC編譯並安裝ACE

在windows上使用vc編譯並安裝ace 標籤 來自官方的readme 在windows上使用vc編譯並安裝ace ace包含vc7.1和vc8的工程檔案。vc8能夠在windows 桌面 伺服器 wince,winmobie上編譯。大部分使用者對ce mobile不感興趣,所以這些平台的有自己的...

PJSIP Linux編譯庫並使用

1 configure 2 make dep make 3 copy所有的靜態庫到test lib 下,copy所有的.h 檔案到test include下。4 編寫測試 hellosip.c 5 編寫makefile,如下 注意.a靜態庫的包含順序?obj hellosip cc gcc cfla...