因为项目需要在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.hLOCAL_COPY_HEADERS_TO := libpcreLOCAL_CFLAGS += -O3 -I. -DHAVE_CONFIG_HLOCAL_MODULE := libpcreLOCAL_MODULE_CLASS := STATIC_LIBRARIESLOCAL_PRELINK_MODULE := falseinclude $(BUILD_STATIC_LIBRARY)###### Build pcregrep###include $(CLEAR_VARS)LOCAL_MODULE := pcregrepLOCAL_SRC_FILES := pcregrep.cLOCAL_CFLAGS += -O3 -I. -DHAVE_CONFIG_HLOCAL_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库了。

更多相关文章

  1. 一句话让Android(安卓)原生launcher2的桌面变的有弹性
  2. Android(安卓)base-adapter-helper 源码分析与扩展
  3. Android串口操作,简化android-serialport-api的demo
  4. 【源码分享下载】每日更新之Android应用源码比较不错的新闻客户
  5. Android之AndroidStudio生成jar
  6. Android(安卓)Jetpack系列——ViewModel源码分析
  7. Android应用程序启动过程——Launcher源码分析
  8. Android中AIDL实现进程通信(附源码下载)
  9. Windows下给Android(安卓)app进行系统签名

随机推荐

  1. android 字符串国际化的问题
  2. Android(安卓)中the connection to adb i
  3. Android(安卓)驱动与应用
  4. android 背景圆角以及图片圆角处理
  5. Android控件开发之四----ListView(2)
  6. Android(安卓)ImageView、TextureView、
  7. Android(安卓)Studio对于Java8特性的支持
  8. Android(安卓)技术栈总结
  9. Android(安卓)SystemUI 信号栏后添加信号
  10. Android(安卓)BroadcastReceiver