正则表达式pcre在Android下的移植

因为项目需要在android的NDK开发中使用pcre正则表达式库,而android系统中并没有自带该库,所以就得另外移植了, 下面是移植的详细步骤:

 

1. 下载pcre源码,可以到http://sourceforge.net/projects/pcre/下载源码。
我这里使用的是pcre-7.8.tar.gz 。


2. 将pcre-7.8 的源码拷贝至android源码树下的external/pcre目录下。


3. 将下面的Android.mk文件拷贝到external/pcre目录下。

Android.mk:

#
#  Android makefile for libpcre
#
#  This makefile generates libpcre.a, pcregrep and pcre.h ONLY.
#  It should be amended to build libpcreposix.a, libpcrecpp.a
#  and tests.LOCAL_PATH := $(call my-dir)###
### Build libpcre.a and pcre.h
###include $(CLEAR_VARS)#step 1:
# to generate the files  config.h pcre.h pcre_chartables.c 
#
GEN := $(LOCAL_PATH)/config.h
$(GEN): $(LOCAL_PATH)/config.h.generic$(hide) cp $(LOCAL_PATH)/config.h.generic $@
LOCAL_GENERATED_SOURCES += $(GEN)GEN := $(LOCAL_PATH)/pcre.h
$(GEN): $(LOCAL_PATH)/pcre.h.generic$(hide) cp $(LOCAL_PATH)/pcre.h.generic $@
LOCAL_GENERATED_SOURCES += $(GEN)GEN := $(LOCAL_PATH)/pcre_chartables.c
$(GEN): $(LOCAL_PATH)/pcre_chartables.c.dist$(hide) cp $(LOCAL_PATH)/pcre_chartables.c.dist $@
LOCAL_GENERATED_SOURCES += $(GEN)#step 2:
#clear the vars generated by the step 1 
# 
include $(CLEAR_VARS)LOCAL_SRC_FILES :=  \pcre_compile.c \pcre_config.c \pcre_dfa_exec.c \pcre_exec.c \pcre_fullinfo.c \pcre_get.c \pcre_globals.c \pcre_info.c \pcre_internal.h \pcre_maketables.c \pcre_newline.c \pcre_ord2utf8.c \pcre_refcount.c \pcre_study.c \pcre_tables.c \pcre_try_flipped.c \pcre_ucd.c \pcre_valid_utf8.c \pcre_version.c \pcre_xclass.c \pcre_chartables.c \ucp.h \pcre.h \config.h#copy the pcre.h to out/target/product/generic/obj/include/libpcre
#
LOCAL_COPY_HEADERS := pcre.h
LOCAL_COPY_HEADERS_TO := libpcreLOCAL_CFLAGS += -O3 -I. -DHAVE_CONFIG_HLOCAL_MODULE := libpcre
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
LOCAL_PRELINK_MODULE := falseinclude $(BUILD_STATIC_LIBRARY)###
### Build pcregrep
###include $(CLEAR_VARS)LOCAL_MODULE := pcregrep
LOCAL_SRC_FILES := pcregrep.c
LOCAL_CFLAGS += -O3 -I. -DHAVE_CONFIG_H
LOCAL_STATIC_LIBRARIES := libpcreinclude $(BUILD_EXECUTABLE)

4. cd 到 android的源码树的根目录下,输入命令:

. build/envsetup.sh

chooseproduct
mmm external/pcre
从下面的log可以看到生成了libpcre.a库:

make: Entering directory `/home/braincol/workspace/android/android_build/android_sdk_froyo'
Header: out/target/product/generic/obj/include/libpcre/pcre.h
target thumb C: pcregrep <= external/pcre/pcregrep.c
target thumb C: libpcre <= external/pcre/pcre_compile.c
target thumb C: libpcre <= external/pcre/pcre_config.c
target thumb C: libpcre <= external/pcre/pcre_dfa_exec.c
target thumb C: libpcre <= external/pcre/pcre_exec.c
target thumb C: libpcre <= external/pcre/pcre_fullinfo.c
target thumb C: libpcre <= external/pcre/pcre_get.c
target thumb C: libpcre <= external/pcre/pcre_globals.c
target thumb C: libpcre <= external/pcre/pcre_info.c
target thumb C: libpcre <= external/pcre/pcre_maketables.c
target thumb C: libpcre <= external/pcre/pcre_newline.c
target thumb C: libpcre <= external/pcre/pcre_ord2utf8.c
target thumb C: libpcre <= external/pcre/pcre_refcount.c
target thumb C: libpcre <= external/pcre/pcre_study.c
target thumb C: libpcre <= external/pcre/pcre_tables.c
target thumb C: libpcre <= external/pcre/pcre_try_flipped.c
target thumb C: libpcre <= external/pcre/pcre_ucd.c
target thumb C: libpcre <= external/pcre/pcre_valid_utf8.c
target thumb C: libpcre <= external/pcre/pcre_version.c
target thumb C: libpcre <= external/pcre/pcre_xclass.c
target thumb C: libpcre <= external/pcre/pcre_chartables.c
target StaticLib: libpcre (out/target/product/generic/obj/STATIC_LIBRARIES/libpcre_intermediates/libpcre.a)
target Executable: pcregrep (out/target/product/generic/obj/EXECUTABLES/pcregrep_intermediates/LINKED/pcregrep)
target Non-prelinked: pcregrep (out/target/product/generic/symbols/system/bin/pcregrep)
target Strip: pcregrep (out/target/product/generic/obj/EXECUTABLES/pcregrep_intermediates/pcregrep)
Install: out/target/product/generic/system/bin/pcregrep
make: Leaving directory `/home/braincol/workspace/android/android_build/android_sdk_froyo'

 

然后只要把libpcre.a库和头文件pcre.h拷贝到你的android应用工程中,然后就可以在ndk中使用这个pcre库了。

转载于:https://www.cnblogs.com/hibraincol/archive/2011/10/15/2213714.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 593. 有效的正方形(数学)

1. 题目 给定二维空间中四点的坐标&#xff0c;返回四点是否可以构造一个正方形。 一个点的坐标&#xff08;x&#xff0c;y&#xff09;由一个有两个整数的整数数组表示。 示例: 输入: p1 [0,0], p2 [1,1], p3 [1,0], p4 [0,1] 输出: True注意: 所有输入整数都在 [-100…

特征计算 - 遍历求值提速 6 万倍 lambda...if...else(if...else...) +map() 对比 iterrows() - Python代码

Python 进行 DataFrame 数据处理的过程中&#xff0c;需要判断某一列中的值&#xff08;条件&#xff09;&#xff0c;然后对其他两列或三列进行求和&#xff08;均值/最值&#xff09;等运算&#xff0c;并把运算结果存储在新的一列中。干说可能觉得比较晕&#xff0c;我们来看…

写写最近吧,关于读研、找工作

刚刚又被朋友问到为什么要选择读研的问题了。已经好多好多人问过我这样的问题&#xff0c;我何尝不想问问自己到底为什么要读研呢。前段时间&#xff0c;每天在睡觉之前都我要想出无数个理由劝服自己要坚持读研&#xff0c;而每天早上第一件事又是再问自己为什么要读研。 我觉得…

非线性回归 - 案例按步骤详解 -(SPSS建模)

在上一篇时间序列的文章中&#xff0c;偶然发现另一份数据的整体趋势很符合非线性回归关系&#xff0c;那么就顺势写一篇非线性回归案例的文章吧。 准备工作&#xff1a;SPSS - 中文版 SPSS 22.0 软件下载与安装教程 - 【附产品授权许可码&#xff0c;永久免费】 数据解释&am…

LeetCode 609. 在系统中查找重复文件(哈希)

1. 题目 给定一个目录信息列表&#xff0c;包括目录路径&#xff0c;以及该目录中的所有包含内容的文件&#xff0c;您需要找到文件系统中的所有重复文件组的路径。 一组重复的文件至少包括二个具有完全相同内容的文件。 输入列表中的单个目录信息字符串的格式如下&#xff1…

邮件服务器之POP3协议分析

第1章. POP3概述 POP3全称为Post Office Protocol version3&#xff0c;即邮局协议第3版。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信 模型&#xff0c;对应的RFC文 档为RFC1939。 该协议非常简单&#xff0c;所以我们只重点介绍其通信过程&#xff0c;而相关…

Python 画图常用颜色 - 单色、渐变色、混色 - 够用

单色 装了seaborn扩展的话&#xff0c;在字典seaborn.xkcd_rgb中包含所有的xkcd crowdsourced color names。如下&#xff1a; plt.plot([1,2], lw4, cseaborn.xkcd_rgb[baby poop green]) 虽然觉得上面的已经够用了&#xff0c;但是还是备份一下这个最全的吧。 渐变色&…

[scikit-learn 机器学习] 2. 简单线性回归

文章目录1. 简单线性回归2. 评价模型本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记1. 简单线性回归 import numpy as np import matplotlib.pyplot as pltX np.array([[6],[8],[10],[14],[18]]) y np.array([7,9,13,17.5,18]) plt.title("pizza …

Python 画图常用点的形状,Matplotlib 设置参数marker的值 - o + - ★☆►◁ - 够用

markertype含义“.”point点“,”pixel像素“o”circle圆“v”triangle_down下三角“^”triangle_up上三角“<”triangle_left左三角“>”triangle_right右三角“1”tri_down类似奔驰的标志“2”tri_up类似奔驰的标志“3”tri_left类似奔驰的标志“4”tri_right类似奔驰的…

iphone静态库的加载和调试

一. iphone静态库的加载&#xff1a;使用静态库需要提供*.a库文件和*.h头文件。 1. 在xcode中Frameworks项上点击右键add->existing files选择*.a库文件 2. 在classse项上点击右键add->existing files选择*.h头文件 3. 在需要使用库文件的*.m文件中添加import “*.h” 二…

Matplotlib - 散点图 scatter() 所有用法详解

目录 基本用法 散点的大小不同&#xff08;根据点对应的数值&#xff09; 散点的颜色不同&#xff08;指定颜色或者渐变色&#xff09; 散点图和折线图是数据分析中最常用的两种图形&#xff0c;他们能够分析不同数值型特征间的关系。其中&#xff0c;散点图主要用于分析特征…

VC 6中使用不同调用规范的函数在符号文件里的表示方式

在以前老版本的C编译器里&#xff0c;编译器会为使用不同调用约定&#xff08;Calling Convention&#xff09;的函数生成不同的名称&#xff0c;不仅是连接程序会遵从这个命名规则&#xff0c;调试器也会遵守这个命名规则。因此在Visual Studio里调试使用老版本编译器编译出来…

Matplotlib - 折线图 plot() 所有用法详解

散点图和折线图是数据分析中最常用的两种图形。其中&#xff0c;折线图用于分析自变量和因变量之间的趋势关系&#xff0c;最适合用于显示随着时间而变化的连续数据&#xff0c;同时还可以看出数量的差异&#xff0c;增长情况。 Matplotlib 中绘制散点图的函数为 plot() &…

html 拍照旋转了90度_华为Mate X2概念图:可旋转正反三屏幕,单颗镜头在转轴上...

如果你是新朋友&#xff0c;请点击上方的蓝色字 关注 “高科技爱好者”&#xff0c;保证不会让你失望的.华为折叠手机的上市发售&#xff0c;引起了消费者的广泛关注&#xff0c;尤其是华为MateX系列手机的售价非常昂贵&#xff0c;同时出货量也比较少&#xff0c;所以外界都十…

[scikit-learn 机器学习] 3. K-近邻算法分类和回归

文章目录1. KNN模型2. KNN分类3. 使用sklearn KNN分类4. KNN回归本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记K 近邻法&#xff08;K-Nearest Neighbor, K-NN&#xff09; 常用于 搜索和推荐系统。 1. KNN模型 确定距离度量方法&#xff08;如欧氏距离…

[转帖]关于Linux下的icotl函数

关于Linux下的icotl函数 最近接触android开发&#xff0c;因为有时间所以就关注了下android的源码&#xff0c;在跟踪源码过程中到最后都会遇到icotl函数&#xff0c;虽然在Symbian中曾经遇到过RSocket的icotl函数&#xff0c;但是当时没有细究&#xff0c;今天有时间就搜索了下…

Matplotlib - 柱状图、直方图、条形图 bar() barh() 所有用法详解

目录 基本用法 多个直方图并列显示 显示直方图上的数值 多个直方图堆叠显示 水平直方图 相较散点图和折线图&#xff0c;柱状图&#xff08;直方图、条形图&#xff09;、饼图、箱线图是另外 3 种数据分析常用的图形&#xff0c;主要用于分析数据内部的分布状态或分散状…

word里双横线怎么打_美人计 | 精致打工人秀智,教你内双怎么化

通勤妆千千万&#xff0c;大家画好才能算。国民初恋裴秀智搭档“南朋友”南柱赫&#xff0c;《启动了》这部剧让很多颜值控都纷纷沦陷了。起初奔着这两大主角看的&#xff0c;结果看着看着又被男二金宣虎圈了粉&#xff0c;在剧中裴秀智和金宣虎两小无猜的感情没能发展成爱情&a…

LeetCode 480. 滑动窗口中位数(大小堆升级版+set实现)

1. 题目 中位数是有序序列最中间的那个数。 如果序列的大小是偶数&#xff0c;则没有最中间的数&#xff1b;此时中位数是最中间的两个数的平均数。 例如&#xff1a; [2,3,4]&#xff0c;中位数是 3 [2,3]&#xff0c;中位数是 (2 3) / 2 2.5 给你一个数组 nums&#xff0…

Matplotlib - 饼图、环形图 pie() 多重饼图 subplots() 所有用法详解

目录 基本用法 饼图中突出显示某部分 环形图&#xff08;空心饼图&#xff09; 多重饼图&#xff0c;并添加分割线 相较散点图和折线图&#xff0c;柱状图、饼图、箱线图是另外 3 种数据分析常用的图形&#xff0c;主要用于分析数据内部的分布状态或分散状态。饼图主要用于…