对libevent有些感兴趣,下载了一个准备研究一下。在编译过程中,遇到了一些问题,写篇文章记录一下。
libevent : libevent-2.1.8-stable
编译&&安装
1、./configure --prefix=/opt/libevent
这一步是用来生成编译时用的makefile,其中,–prefix用来指定libevent的安装目录。
2、make 编译,我在编译的时候遇到如下报错:/root/libevent-2.1.8-stable/missing:行81: aclocal-1.15: 未找到命令
解决办法:
执行命令,autoreconf -ivf 让其自动配置一下源代码。
然后在make编译就没问题了。
3、make install 安装成功,可以看到 /opt/libevent下面已经有文件生成了。
demo测试
1、用个定时器来测一下,代码如下:
#include <sys/types.h>
#include <event2/event-config.h>
#include <stdio.h>
#include <event.h>
struct event ev;
struct timeval tv;
void time_cb(int fd, short event, void *argc)
{
printf("timer wakeup!\n");
event_add(&ev, &tv);
}
int main()
{
struct event_base *base = event_init();
tv.tv_sec = 10;
tv.tv_usec = 0;
evtimer_set(&ev, time_cb, NULL);
event_base_set(base, &ev);
event_add(&ev, &tv);
event_base_dispatch(base);
}
编译:gcc test.c -o test_event -I /opt/libevent/include/ -L /opt/libevent/lib/ -levent
注意:-I 是大写的 i 啊,不是小写的L,用来指定头文件的,-L则是用来指定引用库的位置的。
2、运行 ./test_event
报错:./test_event: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
没找到库,链接一下:ln -s /opt/libevent/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
再次运行,ok了。
OK,可以继续捣鼓这个libevent了。