libevent安装及简单的使用

前言       

首先我阅读的版本是libevent-1.4.14b-stable版本。1.4系列虽然比较古老,但是它的源码相对简单,便于学习,并且主要的思想与2.0系列是一致的。
附上官网链接:http://libevent.org/

安装及简单使用libevent    

接下来我们直接进入正题,安装libevent-1.4。
1. 在官网上下载对应版本的包
2. tar -zxvf /your path/libevent-1.4.14b-stable.tar.gz解压到当前目录
3. cd libevent-1.4.14b-stable
4. ./configure
5. make && make install
6. 在/usr/local/lib目录下应该可以看见大量的动态链接库了,这时运行ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2命令(这是为了防止在系统默认路径下 找不到库文件,也可以使用gcc中的-L参数来指定库文件的位置所在)
7. 接下来就可以使用libevent库来编写我们的代码了

简单的例子(现在看不懂没关系):

#include 
#include 
//使用libevent库所需头文件  
#include   

void on_time(int sock,short event,void *arg)  
{  
    printf("hello world\n");  

    struct timeval tv;  
    tv.tv_sec = 1;  
    tv.tv_usec = 0;  

    // 事件执行后,默认就被删除,所以需要重新添加  
    event_add((struct event*)arg, &tv);  
}  

int main()  
{  
    //  初始化事件  
    event_init();  

    //  设置定时器回调函数  
    struct event ev_time;  
    evtimer_set(&ev_time, on_time, &ev_time);  

    //1s运行一次func函数
    struct timeval tv;  
    tv.tv_sec = 1;  
    tv.tv_usec = 0;  

    //添加到事件循环中
    event_add(&ev_time, &tv);  

    //程序等待就绪事件并执行事件处理
    event_dispatch();  

    return 0;  
}  

执行命令gcc demo.c -o demo -levent编译
运行./demo
接下来就可以看到终端上每过1s就会打印hello world出来了。

可能会遇到的问题:
error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory当编译时出现这个错误信息证明gcc没有找到你的动态链接库
解决方法:
可能的原因有两个:
1. 你忘了执行上面提到的ln -s....命令,这是因为运行时动态库的搜索路径默认是/lib以及/usr/lib路径。或者可以使用gcc demo.c -o -L/your_path demo来指定动态链接库的位置。
2. 如果还是不行, 运行命令ldconfig生效。
ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令进行更新。

你可能感兴趣的:(Libevent)