编译可在Android上运行的依赖库(五):pcre库

2016年04月28日 17:50 5871


前言


pcre版本:8.38。

本文在Ubuntu 64位系统上对pcre项目进行交叉编译。

下文中的"NDK"若无特殊说明均指"Android NDK"。


步骤


1. 下载并安装Android NDK


下载并安装Android NDK的过程在这里不做介绍。


2. 下载pcre


到pcre的官网去下载这个库的源码。官网地址:http://pcre.org/


3. 设置NDKSYSROOT环境变量


请参考编译可在Android上运行的glib中相应的步骤。


注意:这里没有也不需要“创建NDK工具的软链接”这个步骤。


4. 运行configure


CPP=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-cpp CXXCPP=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-cpp CPPFLAGS="--sysroot $SYSROOT -I$NDK/sources/cxx-stl/gnu-libstdc++/4.9/include -I$NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include -L$NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/" ./configure --prefix="${SYSROOT}/usr" --host=arm-linux-androideabi CFLAGS="--sysroot $SYSROOT" CXXFLAGS="--sysroot $SYSROOT" LDFLAGS="-L$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/ -L$NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/ -L$SYSROOT/usr/lib/" LIBS="-lgnustl_static"


为了保证交叉编译成功,必须设置CPP、CXXCPP和CPPFLAGS这三个宏。下面是从configure.ac文件(该文件在pcre源码中)中提取出来的对这三个宏的解释:


    CPP:C preprocessor .................. : ${CPP}

    CXXCPP:C++ preprocessor ................ : ${CXXCPP}

    CPPFLAGS:C preprocessor flags ............ : ${CPPFLAGS}


CPP和CXXCPP指向的预处理器均来自NDK。

CPPFLAGS除了设置了--sysroot外,还设置了头文件的搜索路径。

LDFLAGS设置了库搜索路径,LIBS设置了依赖库,这两个宏也必须被设置。

对./configure命令中的其他部分解析请参考编译可在Android上运行的libiconv中的相应步骤。


5. 编译和安装


请参考编译可在Android上运行的libiconv中的相应步骤。


如何在Android上运行的编译依赖库


编译可在Android上运行的依赖库(一):glib库

编译可在Android上运行的依赖库(二):gettext库

编译可在Android上运行的依赖库(三):libffi库

编译可在Android上运行的依赖库(四):libiconv库

编译可在Android上运行的依赖库(五):pcre库




作者:寻禹@阿里移动安全,更多技术文章,请访问阿里聚安全博客



标签

  • 短信
  • 积分兑换
  • 仿冒应用
  • 漏洞分析
  • 漏洞预警
  • 年度报告
  • 安全报告
  • 病毒分析
  • 阿里聚安全
应用更安全,用户更放心! 立即登录