How to port pcre 8.33 to Android

来源:互联网 发布:什么是软件过程 编辑:程序博客网 时间:2024/05/04 18:07
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) |
0

上一篇:正则表达式pcre在Android下的移植

下一篇:Languages supported by Lighttpd

相关热门文章
  • test123
  • 编写安全代码——小心有符号数...
  • 使用openssl api进行加密解密...
  • 一段自己打印自己的c程序...
  • sql relay的c++接口
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
原创粉丝点击