android+ndk+libevent,android ndk 编译 libevent
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相关推荐
- Libevent 学习一:Libevent 源码编译
文章目录 Libevent 学习一:Libevent 源码编译 Libevent Windows 编译 Windows 编译环境 安装 Visual Studio Community 2015 安装 ...
- 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )
文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...
- 26.Android Studio下Ndk开发(ffmpeg导入Android studio以cmake方式编译的过程)
Android studio 2.2开始支持cmake的方式进行jni开发,我在另一篇10.Eclipse下Ndk开发(ffmpeg解码)中写过Eclipse下编译ffmpeg的过程,但是现在几乎没有 ...
- [Android]Cygwin使用及NDK编译方法
在Windows XP, Cygwin, NDK SDK r5b下成功编译了ffmpeg,下面是完整的编译过程: 一.准备工作 2.下载Cygwin, 请猛击这里 3.下载Android SDK,请猛 ...
- android jni不适用ndk,Android NDK编译之undefined reference to 'JNI_CreateJavaVM'
利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM.编译的时候始终报以下错误: XXX: ...
- 记录过程: Android Studio4.2通过NDK调用TNN(预编译的tnn so库)
目录 0. 准备 1. 创建android ndk工程 2. 分析默认生成的工程 3. 写好java native接口 4. 实现这些java native方法(jni) 5. 修改cpp/CMake ...
- Android:JNI 与 NDK到底是什么
前言 在Android开发中,使用 NDK开发的需求正逐渐增大 但很多人却搞不懂 JNI 与 NDK 到底是怎么回事 今天,我将先介绍JNI 与 NDK & 之间的区别,手把手进行 NDK的使 ...
- android ndk r8d,(Android) NDK
從 Android NDK | Android Developers 下载 Android NDK (我在 Ubuntu 所以下载 android-ndk-r5c-linux-x86.tar.bz2) ...
- 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...
最新文章
- python中立方_Python编程从入门到实践 第四章练习题
- 解决dubbo问题:forbid consumer(2)
- 字符串排序 墨迹了半天的自闭题目
- 微信小程序中显示空格
- 检测日期格式是否为yyyy-MM-dd
- android仿支付宝弹窗,【转】MUI自定义底部弹窗自带遮罩层仿支付宝支付弹窗
- java的反射和它的类加载机制
- Spring MVC 入门指南(二):@RequestMapping用法详解
- postgre数据库下的 NOT NULL 和 空串(虽然有NOT NULL设定,但是可以插入空串'')
- poj 1952 BUY LOW, BUY LOWER dp 但去重真是令人纠结
- python爬取图书信息_Python爬取当当、京东、亚马逊图书信息代码实例
- uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
- 计算机休眠后无法联网,电脑休眠后回来就不能上网了
- 如何成为一个出色的演讲家_成为技术演讲者
- Mac上重装PHP-7.3和apache-2.4.41
- git大文件记录清除解决方案
- Wannafly挑战赛27 C 蓝魔法师(树上dp)
- 用RDO 自动化部署openstack--多节点--kilo版
- readl()和writel()
- 计算机如何识别这是一个键盘,键盘两个键同时按下时计算机如何识别被按下的是哪个键...