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

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

作者:寻禹@阿里聚安全


前言


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上运行的依赖库(四):llibiconv库中的相应步骤。

5. 编译和安装

请参考编译可在Android上运行的依赖库(四):llibiconv库中的相应步骤。

作者:寻禹@阿里聚安全,更多技术文章,请点击阿里聚安全博客


阿里聚安全由阿里巴巴移动安全部出品,面向企业和开发者提供企业安全解决方案,全面覆盖移动安全、数据风控、内容安全、实人认证等维度,并在业界率先提出“以业务为中心的安全”,赋能生态,与行业共享阿里巴巴集团多年沉淀的专业安全能力。

时间: 2024-10-29 20:08:35

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

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

编译可在Android上运行的依赖库(一):glib库 作者:寻禹@阿里聚安全 前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在"编译依赖库"一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库交叉编译到Android平台上才能成功的编译glib库,系列文章中除<编译可在Android上运行的glib库>外的其他交叉编译文章均是介绍如何对glib依赖库进行交叉编译.以上,所以叫系列文章,因

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

编译可在Android上运行的依赖库(三):libffi库 作者:寻禹@阿里聚安全 前言 libffi版本:3.2.1. 本文在Ubuntu 64位系统上对libffi项目进行交叉编译. 下文中的"NDK"若无特殊说明均指"Android NDK". 步骤 1. 下载并安装Android NDK 下载并安装Android NDK的过程在这里不做介绍. 2. 下载libffi 到libffi的官网去下载这个库的源码.官网地址:https://sourceware.or

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

编译可在Android上运行的依赖库(二):gettext库 作者:寻禹@阿里聚安全 前言 gettext版本:0.19.7. 本文在Ubuntu 64位系统上对gettext项目进行交叉编译. 下文中的"NDK"若无特殊说明均指"Android NDK". 注意:不要运行gettext源码目录下的autogen.sh文件.如果先运行autogen.sh然后运行configure再然后使用make命令编译时,编译会出错. 步骤 1. 安装必要的工具 如果不安装这些工

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

编译可在Android上运行的依赖库(四):llibiconv库 作者:寻禹@阿里聚安全 前言 libiconv版本:1.14. 本文在Ubuntu 64位系统上对libiconv项目进行交叉编译. 下文中的"NDK"若无特殊说明均指"Android NDK". 注意:不要运行libiconv源码目录下的autogen.sh文件.如果先运行autogen.sh然后运行configure再然后使用make命令编译时,编译会出错. 步骤 1. 下载并安装Android

编译可在Android上运行的qemu user mode

编译可在Android上运行的qemu user mode 寻禹@阿里聚安全 前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的"NDK"若无特殊说明均指"Android NDK". 下文中"$NDK"表示的是NDK的根目录. 步骤 1. 下载并安装Android NDK 下载并安装Android NDK的过程在这里不做介绍. 2. 下载qemu 3. 设置NDK工具的

C/C++交叉编译环境中编译可在Android上运行的可执行文件

X86架构的CPU采用的是复杂指令集(Complex Instruction Set  Computer,CICS),而ARM架构的CPU使用的是精 简指令集(Reduced Instruction Set  Computer,RISC).由于这两种架构的CPU使用了不同的指令集,因此在X86架 构上开发可运行在ARM架构上的程序就必须要使用交叉编译器. 通常交叉编译器和相关工具包含的了很多可执行文件以及大 量的共享库及头文件等资源.这些资源的集合称为交叉编译环境. 在Internet上可以找到

编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)

编译可在Nexus5上运行的CyanogenMod13.0 ROM (基于Android6.0) 作者:寻禹@阿里聚安全 前言 下文中无特殊说明时CM代表CyanogenMod的缩写. 下文中说的"设备"均指Android设备. proprietary-blobs.txt文件的路径:device/lge/hammerhead/proprietary-blobs.txt 参考资料 How To Build CyanogenMod For Google Nexus 5 ("ham

在 Android 上运行 ClojureScript

在过去的几天里,我有了开发生涯中最有意义的经历之一, 想在这里跟大家分享. 现在我们已经让 ClojureScript 可以在 Android 上运行了.不是在一个 WebView 里面,也不是利用像 Cordova 这样的东西,而是实实在在的运行在一个嵌入式的 JavaScript 引擎中.到底发生了什么? 最近,我们做了一些工作创建出了一个 iOS 的 ClojureScript REPL 应用,Replete.整个看上去很酷,而对应的 Android 应用就只算勉强能创建出来.不幸的是,我

Wine 将支持在 Android 上运行 Windows 应用

想要在Linux或者Mac平台上运行Windows应用和游戏?Wine无疑是首选.未来几周开发团队不仅会推出最新版本,还有望披露关于 Windows-on-Android 系统的更多信息,意味着用户能够在Android系统上运行Windows应用. 不过这个项目还在早期开发阶段,Wine开发者目前致力于整合现有的CrossOver Android软件至现有的开源Windows API上,一旦完成之后允许在Android系统上运行Windows应用.不过在即将到来的Wine 2.0上我们并不会看到