1. 准备工作

1.1 原材料

libevent-2.0.22-stable

1.2 编译环境

ubuntu-12.04

ndk-r9d

2. 编译步骤

下载解压缩libevent文件

wget http://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
tar -zxf libevent-2.0.22-stable.tar.gz

创建一个event-config.h文件

cd libevent-2.0.22-stable/
mkdir -p ARM-Code/event2/
vim ARM-Code/event2/event-config.h

编辑event-config.h

#ifndef _EVENT2_EVENT_CONFIG_H_
#define _EVENT2_EVENT_CONFIG_H_
#define _EVENT_HAVE_SA_FAMILY_T 1
#define _EVENT_HAVE_SYS_SOCKET_H 1
#define _EVENT_HAVE_NETINET_IN_H 1
#define _EVENT_HAVE_SYS_TIME_H 1
#define _EVENT_HAVE_STDARG_H 1
#define _EVENT_HAVE_UNISTD_H 1
#define _EVENT_HAVE_NETINET_IN6_H 1
#define ARC4RANDOM_NOADDRANDOM 1
#define _EVENT_HAVE_STRLCPY 1
#define _EVENT_HAVE_STRSEP 1
#define _EVENT_HAVE_NETDB_H 1
#define _EVENT_HAVE_STRTOK_R 1
#define _EVENT_HAVE_FCNTL_H 1
#define _EVENT_HAVE_GETTIMEOFDAY 1
#define _EVENT_HAVE_INTTYPES_H 1
#define _EVENT_HAVE_MEMORY_H 1
#define _EVENT_HAVE_PUTENV 1
#define _EVENT_HAVE_SIGNAL 1
#define _EVENT_HAVE_STDARG_H 1
#define _EVENT_HAVE_STDDEF_H 1
#define _EVENT_HAVE_STDINT_H 1
#define _EVENT_HAVE_STDLIB_H 1
#define _EVENT_HAVE_STRINGS_H 1
#define _EVENT_HAVE_STRING_H 1
#define _EVENT_HAVE_STRTOLL 1
#define _EVENT_HAVE_STRUCT_IN6_ADDR 1
#define _EVENT_HAVE_STRUCT_IN6_ADDR_S6_ADDR16 1
#define _EVENT_HAVE_STRUCT_IN6_ADDR_S6_ADDR32 1
#define _EVENT_HAVE_STRUCT_SOCKADDR_IN6 1
#define _EVENT_HAVE_STRUCT_SOCKADDR_STORAGE 1
#define _EVENT_HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
#define _EVENT_HAVE_SYS_PARAM_H 1
#define _EVENT_HAVE_SYS_STAT_H 1
#define _EVENT_HAVE_SYS_TIME_H 1
#define _EVENT_HAVE_SYS_TYPES_H 1
#define _EVENT_HAVE_TIMERCLEAR 1
#define _EVENT_HAVE_TIMERCMP 1
#define _EVENT_HAVE_TIMERISSET 1
#define _EVENT_HAVE_UINT16_T 1
#define _EVENT_HAVE_UINT32_T 1
#define _EVENT_HAVE_UINT64_T 1
#define _EVENT_HAVE_UINT8_T 1
#define _EVENT_HAVE_UINTPTR_T 1
#define _EVENT_HAVE_UMASK 1
#define _EVENT_HAVE_UNISTD_H 1
#define _EVENT_LT_OBJDIR ".libs/"
#define _EVENT_NUMERIC_VERSION 0x02001500
#define _EVENT_PACKAGE "libevent"
#define _EVENT_PACKAGE_BUGREPORT ""
#define _EVENT_PACKAGE_NAME ""
#define _EVENT_PACKAGE_STRING ""
#define _EVENT_PACKAGE_TARNAME ""
#define _EVENT_PACKAGE_URL ""
#define _EVENT_PACKAGE_VERSION ""
#define _EVENT_SIZEOF_INT 4
#define _EVENT_SIZEOF_LONG 4
#define _EVENT_SIZEOF_LONG_LONG 8
#define _EVENT_SIZEOF_SHORT 2
#define _EVENT_SIZEOF_SIZE_T 4
#define _EVENT_SIZEOF_VOID_P 4
#define _EVENT_STDC_HEADERS 1
#define _EVENT_TIME_WITH_SYS_TIME 1
#define _EVENT_VERSION "2.0.21-stable"
#ifndef _EVENT___cplusplus
#endif
#define _EVENT_socklen_t unsigned int #endif /* event2/event-config.h */

创建Android.mk文件

vim Android.mk

编写Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := eventcore
LIB_SRC := \
event.c \
evthread.c \
buffer.c \
bufferevent.c \
bufferevent_filter.c \
bufferevent_pair.c \
listener.c \
bufferevent_ratelim.c \
evmap.c \
log.c \
evutil.c \
evutil_rand.c \
select.c \
poll.c \
epoll.c \
signal.c \
event_tagging.c \
http.c \
evdns.c \
evrpc.c \
bufferevent_sock.c

LOCAL_SRC_FILES := $(LIB_SRC)
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/include \
$(LOCAL_PATH)/compat \
$(LOCAL_PATH)/ARM-Code
include $(BUILD_SHARED_LIBRARY)

创建ndk项目文件

mkdir jni
vim jni/Android.mk
vim jni/Application.mk

编辑jni/Android.mk文件

include $(CLEAR_VARS)
include $(APP_PROJECT_PATH)/Android.mk

编辑jni/Application.mk

APP_PROJECT_PATH := $(call my-dir)/../

APP_STL:=gnustl_static   # 根据自己的需要修改

APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-

最后ndk-build就可以了

ndk-build

博客不在线,有问题直接联系QQ: 783713515

libevent for android的更多相关文章

  1. 基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET

    基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android L ...

  2. Chromium多线程模型设计和实现分析

    Chromium除了远近闻名的多进程架构之外,它的多线程模型也相当引人注目的.Chromium的多进程架构是为了解决网页的稳定性问题,而多线程模型则是为了解决网页的卡顿问题.为了达到这个目的,Chro ...

  3. android ndk 编译 libevent

    1. 下载 libevent 2.1.8 版本 https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/ ...

  4. 【Android】源码external/目录中在编译过程中生成的文件列表

    => external/eyes-free:   accessibilityvalidator.jar (host,share) => external/mesa3d:   libMesa ...

  5. 浅谈独立使用NDK编译库文件(Android)

    阅读前准备 这是一篇相对入门的文章.文中会涉及到少许NDK的知识,但个人认为对初学者来说都相对比较实用,因为都是在平时项目中遇到的(目前自己也是初学者).一些其他高深的技术不再本文探讨范围之内(因为我 ...

  6. 〖Android〗Android源代码所有目录生成的Target(编译生成文件反查)

    => build/tools/zipalign: out/host/linux-x86/bin/zipalign (host) => build/tools/atree: out/host ...

  7. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...

  8. libevent2笔记(linux、windows、android的编译)

    0. 前言 我使用的版本是libevent-2.0.21-stable.高级的应用还是得看官网文档http://www.wangafu.net/~nickm/libevent-2.0/doxygen/ ...

  9. 反汇编调试Android

    https://code.google.com/p/android/issues/detail?id=73076 http://my.unix-center.net/~Simon_fu/?p=527 ...

随机推荐

  1. android的Home键的监听封装工具类(一)

    android的Home键的监听封装: package com.gzcivil.utils; import android.content.BroadcastReceiver; import andr ...

  2. C++ ASCII 码的一些问题

    关于ASCII码和转义字符的对应问题,一直都有个困惑.所以今天校验了一下是什么情况. 转义字符的百度百科:http://baike.baidu.com/link?url=D9ytjAeiYr1ZGKG ...

  3. ?super T 和? extends T区别

    Java 泛型 关键字说明 ? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类 <? super T> 表示类型下界(Java ...

  4. QF——UI之UIViewController

    程序一经启动,AppDelegate的实例就会创建一个充满屏幕的window,它是App唯一的,一个App对应一个window.window是UIWindow类型的,继承于UIView,是种特殊的UI ...

  5. shell脚本定时备份数据库

    脚本代码: 新建文件back_db.sh #!/bin/bash TODAYTIME="`date +%Y%m%d`" DBNAME="test mysql" ...

  6. Invalid signature file digest for Manifest main attributes

    Solving a Spark error: Invalid signature file digest for Manifest main attributes When using spark-s ...

  7. Ajax访问PHP页面出现的跨域问题

    1.跨域问题:简单来说就是A域名下的程序想从B域名下的文件里面获取信息(这句话是我上网看到的) 2.一般请求(本地测试): 请求页 响应页      这样做是没问题的. 但我如果将Ajax请求的url ...

  8. jquery结合Highcharts插件实现动态数据仪表盘图形化显示效果

    仪表盘显示效果如图: 方法一效果图: 方法二效果图(插件版本4.0.1): ​ js代码如下: $(function(){ //方法一: var chart = new Highcharts.Char ...

  9. <a>标签中 href="/" 和 hideFocus="true"

    一:href="/" 连接到根目录 这是相对路径的根目录表示方法 可以写为 http://class.qq.com/">腾讯精品课 (绝对路径写法) 也可以为 腾讯 ...

  10. Continue

    Continue 其作用为结束本次循环.即跳出循环体中下面尚未执行的语句. 对于while循环,继续求解循环条件. 对于for循环程序流程接着求解for语句头中的第三个部分expression表达式. ...