zoukankan      html  css  js  c++  java
  • 编译Android版本的Poco库

    项目需要在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



  • 相关阅读:
    依次逐个亮灯并且每次只能亮一个灯的跑马灯程序
    逐个点亮LED灯,再逐个熄灭LED灯的跑马灯程序---基于74HC595移位锁存器,程序框架用switch语句
    把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式
    两片联级74HC595驱动16个LED灯的基本驱动程序
    树莓派
    Linux I2C驱动
    转:使用 /proc 文件系统来访问 Linux 内核的内容
    转: 使用 /sys 文件系统访问 Linux 内核
    树梅派 -- 通过/sys读写ADC芯片 pcf8591
    树莓派 -- oled 续(2) python
  • 原文地址:https://www.cnblogs.com/wanggang123/p/13944686.html
Copyright © 2011-2022 走看看