How to port pcre 8.33 to Android

http://hamer-blog.logdown.com/posts/141588-how-to-port-pcre-to-android


pcre版本是8.33, 下載link如下:
http://sourceforge.net/projects/pcre/files/pcre/8.33/pcre-8.33.tar.bz2/download

Android 版本是 4.2.1

以下方法是參考:
https://github.com/3ign0n/android-porting/tree/master/pcre

再加上一些些微的修正

首先把下載下來的tar檔解壓縮到android source code的external directory
設定好下面兩個環境變數

PDK_ROOT="your-android-source-root-directory" PATH=$PDK_ROOT/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.6/bin:$PATH 

然後

./configure --host=mipsel-linux CC=mipsel-linux-android-gcc CPP=mipsel-linux-android-cpp CFLAGS="-nostdlib -DHAVE_STRERROR=1" CPPFLAGS="-I${PDK_ROOT}/development/ndk/platforms/android-9/include -I${PDK_ROOT}/bionic/libc/include/ -I${PDK_ROOT}/bionic/libc/arch-mips/include/ -I${PDK_ROOT}/bionic/libc/kernel/common/ -I${PDK_ROOT}/bionic/libc/kernel/common/linux/ -I${PDK_ROOT}/bionic/libc/kernel/arch-mips" LDFLAGS="-Wl,-rpath-link=${PDK_ROOT}/out/target/product/saturn/system/lib -L${PDK_ROOT}/out/target/product/saturn/system/lib" --enable-utf8 --enable-unicode-properties

此時會生成config.h 等其他檔案, 這時候修改config.h裡面的內容如下

/* #undef HAVE_STRERROR */ 

--->

#define HAVE_STRERROR 1 

再來就在pcre的 directory內放上Android.mk, 內容如下:

#
#  Android makefile for libpcre
#
#  This makefile generates libpcre.so, pcregrep and pcre.h ONLY.
#  It should be amended to build libpcreposix.so, libpcrecpp.so
#  and tests.  LOCAL_PATH := $(call my-dir) ###
### Build libpcre.so and pcre.h
###  include $(CLEAR_VARS) LOCAL_MODULE := libpcre LOCAL_MODULE_CLASS := SHARED_LIBRARIES LOCAL_PRELINK_MODULE := false LOCAL_MODULE_TAGS := samples intermediates := $(call local-intermediates-dir) LOCAL_SRC_FILES :=   pcre_byte_order.c  pcre_compile.c  pcre_config.c  pcre_dfa_exec.c  pcre_exec.c  pcre_fullinfo.c  pcre_get.c  pcre_globals.c  pcre_internal.h  pcre_jit_compile.c  pcre_maketables.c  pcre_newline.c  pcre_ord2utf8.c  pcre_refcount.c  pcre_string_utils.c  pcre_study.c  pcre_tables.c  pcre_ucd.c  pcre_valid_utf8.c  pcre_version.c pcre_xclass.c  ucp.h LOCAL_COPY_HEADERS := pcre.h LOCAL_CFLAGS += -O3 -I. -DHAVE_CONFIG_H 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) LOCAL_SRC_FILES += pcre_chartables.c #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)/config.h
#$(GEN): $(LOCAL_PATH)/config.h.generic
#   $(hide) cp $(LOCAL_PATH)/config.h.generic $@
#LOCAL_GENERATED_SOURCES += $(GEN)  include $(BUILD_SHARED_LIBRARY) ###
### Build pcregrep
###  include $(CLEAR_VARS) LOCAL_MODULE := pcregrep LOCAL_SRC_FILES := pcregrep.c LOCAL_CFLAGS += -O3 -I. -DHAVE_CONFIG_H LOCAL_SHARED_LIBRARIES := libpcre LOCAL_MODULE_TAGS := samples include $(BUILD_EXECUTABLE) 

之後就可以如編譯Android的個別component一樣 mm showcommands or mm -B showcommands來編譯pcre了
到這邊就算完工



<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(69) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
原文地址:https://www.cnblogs.com/ztguang/p/12649039.html