Libevent的安装与使用(一)

发布时间 2023-12-04 14:50:43作者: TechNomad

一、了解libevent

  Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。

  libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各种IO(socket)、定时器、信号等事件;缓存管理是指evbuffer功能;DNS是libevent提供的一个异步DNS查询功能;HTTP是libevent的一个轻量级http实现,包括服务器和客户端。libevent也支持ssl,这对于有安全需求的网络程序非常的重要,但是其支持不是很完善,比如http server的实现就不支持ssl。Reactor(反应堆)模式是libevent的核心框架,libevent以事件驱动,自动触发回调功能。Reactor(反应堆)模式是libevent的核心框架,libevent以事件驱动,自动触发回调功能。

二、安装libevent

官方网站: http://libevent.org

安装环境:CentOS7

源码包的安装,以2.1.12版本为例,在官网可以下载到源码包libevent-2.1.12-stable.tar.gz,基本安装步骤与第三方库源码包安装方式基本一致。

1.解压源码包并进入到源码目录

2.执行配置文件./configure,生成makefile

也可以指定具体路径,这样安装的时候,将统一安装到指定路径 例如:./configure --prefix=/usr/local/libevent,这样的好处是以后打包安装好的文件方便,不好的地方是由于安装的目录有可能不是系统头文件或库文件的目录,使用的时候需要增加gcc选项来包含头文件路径和库文件路径,以及需要解决动态库不能加载的问题。

3.编译源码

4.编译成功后安装

三、使用Libevent编写简单的程序并编译使用

#include <stdio.h>
#include <event.h>

int main()
{
    const char** methods = event_get_supported_methods(); //获取libevent后端支持的方法
    int i = 0;
    for (i = 0; methods[i] != NULL; i++) {
        printf("%s\n", methods[i]);
    }

    return 0;
}

使用libevent库开发的程序,默认编译需要加入-levent

编译后运行:  

先查看libevent-2.1.so.7是否安装成功

从上面查找结果可以发现,系统已经安装了该模块,在路径 /usr/local/lib/下。映射libevent-2.1.so.7到lib64下即可