1.首先用命令查看libevent是否安装(有的系统安装会自动安装,但是版本比较低,需要删除旧的版本)。
# ls -al /usr/lib | grep libevent
//如果已安装的版本低于1.3,执行删除命令
# rmp -e libevent --nodeps
//以:libevent-2.0.22-stable.tar.gz为例安装:
2.解压并安装
# tar zxvf libevent-2.0.22-stable.tar.gz
# cd libevent-2.0.22-stable.
#./configure
# make
# make install(root权限执行)
//Libevent会安装在/usr/lib或者/usr/local/lib下
3.测试libevent是否安装成功
# ls -al /usr/lib | grep libevent
//或者
# ls -al /usr/local/lib | grep libevent
4.如果安装在/usr/local/lib下需要软连接到/usr/lib
# ln -s /usr/local/lib/libevent-2.0.so.5.1.9 /usr/lib/libevent-2.0.so.5.1.9
上图中一些库的介绍:
libevent_code:所以核心的事件和缓冲功能,包含所有的event_base,evbuffer,bufferevent和工 具函数。
libevent_extra:定义了一些协议,包括http,dns和rpc。
libevent_pthreads:添加基于pthread可移植线程库的线程和锁实现。它独立于libevent_code, 这样程序在使用libevent的时候就不需要链接到pthread,除非是以多进程方式 使用libevent。
lbevent:这个库因为历史原来而存在,它包含libevent_code和libevent_extra的内容。
libevent_openssl:通过openssl和bufferevent提供了加密通讯。
5.程序测试:简单定时器实现程序每秒输出一个“Game Over!”
include
#include
#include//
using namespace std;
// 定时器回调函数
void onTime(int sock, short event, void *arg){
cout << "Game over!" << endl;
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
//重新添加定时事件(定时事件触发会默认自动删除)
event_add((struct event*)arg, &tv);
}
int main(){
//初始化
event_init();
struct event evTime;
//设置定时事件
evtimer_set(&evTime, onTime, &evTime);
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
//添加定时事件
event_add(&evTime, &tv);
//事件循环
event_dispatch();
return 0;
}