1. 下载 libevent 2.1.8 版本

2. 先在 win10 上用 wsl ubuntu 编译 libevent

3. 在 wsl 上,准备需要的编译环境sudo apt-get install automake

sudo apt-get install autoconf

sudo apt-get install libtool

4. 在livevent目录下运行 autogen.sh./autogen.sh

autoreconf: Entering directory `.'

autoreconf: configure.ac: not using Gettext

autoreconf: running: aclocal --force -I m4

autoreconf: configure.ac: tracing

autoreconf: running: libtoolize --copy --force

libtoolize: putting auxiliary files in '.'.

libtoolize: copying file './ltmain.sh'

libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.

libtoolize: copying file 'm4/libtool.m4'

libtoolize: copying file 'm4/ltoptions.m4'

libtoolize: copying file 'm4/ltsugar.m4'

libtoolize: copying file 'm4/ltversion.m4'

libtoolize: copying file 'm4/lt~obsolete.m4'

autoreconf: running: /usr/bin/autoconf --force

autoreconf: running: /usr/bin/autoheader --force

autoreconf: running: automake --add-missing --copy --force-missing

configure.ac:25: installing './compile'

configure.ac:13: installing './missing'

Makefile.am: installing './depcomp'

autoreconf: Leaving directory `.'

5. ./configure

6. make

至此在 wsl ubuntu 上编译libevent已经完成了

下面,就需要在android ndk 环境下编译

1. 在windows上,下载最新版本的ndk

2. 编写 Android.mkLOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_ARM_MODE := arm

LOCAL_MODULE := libevent

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_CFLAGS += -pie -fPIE -static -fPIC

include $(BUILD_STATIC_LIBRARY)

3. 编译 Application.mkAPP_STL      := c++_static

APP_CPPFLAGS := -frtti -std=c++11

APP_ABI      := armeabi-v7a arm64-v8a x86

#APP_ABI     := armeabi-v7a

4. 调用 ndk-build.cmd 就可以编译了

编译过程中遇到的问题, 需要修改 ./include/event2/event-config.h 中的定义

1. error: 'sys/sysctl.h' file not found

注释定义  #define EVENT__HAVE_SYS_SYSCTL_H 1

2. error: static declaration of 'arc4random_addrandom' follows non-static declaration

增加定义  #define EVENT__HAVE_ARC4RANDOM 1

3. error: use of undeclared identifier 'fd_mask'

注释定义  #define EVENT__HAVE_FD_MASK 1

4. error: 'sys/timerfd.h' file not found

注释定义  #define EVENT__HAVE_SYS_TIMERFD_H 1

5. error: use of undeclared identifier 'EPOLL_CLOEXEC'

注释定义  #define EVENT__HAVE_EPOLL_CREATE1 1

基本上就对event-config.h中的一些配置做调整就可以在ndk环境当中编译了,非常简单!

android+ndk+libevent,android ndk 编译 libevent相关推荐

  1. Libevent 学习一:Libevent 源码编译

    文章目录 Libevent 学习一:Libevent 源码编译 Libevent Windows 编译 Windows 编译环境 安装 Visual Studio Community 2015 安装 ...

  2. 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

    文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...

  3. 26.Android Studio下Ndk开发(ffmpeg导入Android studio以cmake方式编译的过程)

    Android studio 2.2开始支持cmake的方式进行jni开发,我在另一篇10.Eclipse下Ndk开发(ffmpeg解码)中写过Eclipse下编译ffmpeg的过程,但是现在几乎没有 ...

  4. [Android]Cygwin使用及NDK编译方法

    在Windows XP, Cygwin, NDK SDK r5b下成功编译了ffmpeg,下面是完整的编译过程: 一.准备工作 2.下载Cygwin, 请猛击这里 3.下载Android SDK,请猛 ...

  5. android jni不适用ndk,Android NDK编译之undefined reference to 'JNI_CreateJavaVM'

    利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM.编译的时候始终报以下错误: XXX: ...

  6. 记录过程: Android Studio4.2通过NDK调用TNN(预编译的tnn so库)

    目录 0. 准备 1. 创建android ndk工程 2. 分析默认生成的工程 3. 写好java native接口 4. 实现这些java native方法(jni) 5. 修改cpp/CMake ...

  7. Android:JNI 与 NDK到底是什么

    前言 在Android开发中,使用 NDK开发的需求正逐渐增大 但很多人却搞不懂 JNI 与 NDK 到底是怎么回事 今天,我将先介绍JNI 与 NDK & 之间的区别,手把手进行 NDK的使 ...

  8. android ndk r8d,(Android) NDK

    從 Android NDK | Android Developers 下载 Android NDK (我在 Ubuntu 所以下载 android-ndk-r5c-linux-x86.tar.bz2) ...

  9. 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )

    文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...

最新文章

  1. python中立方_Python编程从入门到实践 第四章练习题
  2. 解决dubbo问题:forbid consumer(2)
  3. 字符串排序 墨迹了半天的自闭题目
  4. 微信小程序中显示空格
  5. 检测日期格式是否为yyyy-MM-dd
  6. android仿支付宝弹窗,【转】MUI自定义底部弹窗自带遮罩层仿支付宝支付弹窗
  7. java的反射和它的类加载机制
  8. Spring MVC 入门指南(二):@RequestMapping用法详解
  9. postgre数据库下的 NOT NULL 和 空串(虽然有NOT NULL设定,但是可以插入空串'')
  10. poj 1952 BUY LOW, BUY LOWER dp 但去重真是令人纠结
  11. python爬取图书信息_Python爬取当当、京东、亚马逊图书信息代码实例
  12. uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
  13. 计算机休眠后无法联网,电脑休眠后回来就不能上网了
  14. 如何成为一个出色的演讲家_成为技术演讲者
  15. Mac上重装PHP-7.3和apache-2.4.41
  16. git大文件记录清除解决方案
  17. Wannafly挑战赛27 C 蓝魔法师(树上dp)
  18. 用RDO 自动化部署openstack--多节点--kilo版
  19. readl()和writel()
  20. 计算机如何识别这是一个键盘,键盘两个键同时按下时计算机如何识别被按下的是哪个键...

热门文章

  1. hdu 5443 The Water Problem 线段树
  2. 程序员专属段子集锦 3/10
  3. binlog2sql闪回恢复数据
  4. 【POJ 1860】Currency Exchange
  5. document.onreadystatechange()来判断页面加载完
  6. UVa 12657 双向链表
  7. MySQL之GROUP BY用法误解
  8. AJAX JSON之讲解
  9. 算法总结之递推与递归
  10. Java 11 教程