您的位置:首页 > 其它

[置顶] (一)libevent安装及简单的使用

2017-08-25 19:46 211 查看

前言

首先我阅读的版本是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 <stdio.h>
#include <stdio.h>
//使用libevent库所需头文件
#include <event.h>

void onTime(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, func,&ev_ime);

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

//添加到事件循环中
event_add(&evTime,&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通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令进行更新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: