项目需要在android平台使用Poco库,花了些时间成功编译,记录下来以备后用。
编译库总是跟版本有关:编译主机系统为Ubuntu16.04 64位,Poco的版本为1.9.0,
Android ndk版本为r17c。
首先配置系统环境变量,执行命令sudo gedit /etc/profile 在文件末尾加上
export NDK=/home/wgg/Libary/android-ndk-r17c
export ARMGCC=/home/wgg/Libary/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin
export PATH=${PATH}:$NDK
export PATH=${PATH}:$ARMGCC
export ANDROID_NDK_ROOT=$NDK
export ANDROID_SYSROOT=$NDK/sysroot
export PATH=${PATH}:${ANDROID_SYSROOT}
export APP_PLATFORM="android-21"
export TARGET_ABI=armeabi-v7a
export NDK_TOOLCHAIN_VERSION=4.9
export ARMINC=$NDK/sources/cxx-stl/llvm-libc++/include
export INCB=$NDK/sysroot/usr/include/arm-linux-androideabi
export WCINC=$NDK/sysroot/usr/include
export CPLUS_INCLUDE_PATH=${ARMINC}:${INCB}:${WCINC}:${CPLUS_INCLUDE_PATH}
export C_INCLUDE_PATH=${ARMINC}:${INCB}:${WCINC}:${C_INCLUDE_PATH
添加完成后,执行source /etc/profile(也可以重启电脑,重启电脑总是有效的)需要注意的是NDK 需要修改成实际的ndk路径。
ndk编译环境配置好后,修改poco 配置文件build/config/Android,修改内容如下:
文件开始处添加
export ANDROID_SYSROOT="${ANDROID_NDK_ROOT}/platforms/${APP_PLATFORM}/arch-arm" export ANDROID_SHARED="${ANDROID_NDK_ROOT}/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a"
CC = $(TOOL)-gcc CXX = $(TOOL)-g++ 改为 CC = $(TOOL)-gcc --sysroot=${ANDROID_SYSROOT} CXX = $(TOOL)-g++ --sysroot=${ANDROID_SYSROOT}
SHAREDLIBEXT = .so.$(target_version) SHAREDLIBLINKEXT = .so 改为 SHAREDLIBEXT = .so SHAREDLIBLINKEXT =
CFLAGS = $(ARCHFLAGS) -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 CXXFLAGS = $(ARCHFLAGS) -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions 改为 CFLAGS = $(ARCHFLAGS) -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -std=c11 CXXFLAGS = $(ARCHFLAGS) -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions -std=c++11 -DANDROID_STL=c++_shared
CXXFLAGS +=--sysroot=${ANDROID_SYSROOT}
LINKFLAGS += 改为 LINKFLAGS += -L${ANDROID_SHARED}
SYSLIBS = -lstdc++ -lsupc++
改为
SYSLIBS = -lstdc++
以上修改可能有重复的地方,没有一一check。
最后配置Poco并make、make install
./configure --config=Android --no-tests --no-samples --minimal --static --shared --perfix=/home/chungeng/compile/poco
make
make install
如需交流可加QQ群766718184,1038388075 或者QQ3501870,
视频下载地址:http://www.chungen90.com/?news_3/
Demo下载地址: http://www.chungen90.com/?news_2