Libevent 第一印象

前言

之前看网上有人推荐C语言的开源项目,看到有人推荐:redis、nginx,libevent等,自己选了一个 libevent 作为本次学习的对象。

想了解某个东西,先要学会使用它。这里我们先到libevent官网上去下载源码(应该是https://github-cloud.s3.amazonaws.com 网站被封了,导致下载不了),最后只好去github上clone了一份(说到这个真心累,龟速…)。

准备工作

在安装libevent之前,需要先安装了两个工具:一个是 automakelibtool(如果之前已经安装过,则可以忽略,如果不安装这两个工具,则在安装libevent时会出现以下提示信息),在Ubuntu上可以直接通过 sudo apt-get install XXX 命令来安装这两个工具。

"possibly undefined macro: AC_PROG_LIBTOOL"

解决办法:

sudo apt-get install automake 
sudo apt-get install libtool 

开始安装

下载完之后,按照 libevent 上介绍的步骤进行安装。
安装步骤如下:

$ ./autogen.sh
$ ./configure && make
$ make verify
$ sudo make install

第一步会生成配置文件(configure),另外需要注意权限(比如第四步),权限不够会导致执行失败。

编写测试Demo

参考blog——libevent源码深度剖析三, 其中有一个示例程序,这里称为 test_03.cpp 代码如下:

#include <stdio.h>
#include <iostream>
#include <event.h>
using namespace std;

struct event ev;
struct timeval tv;

void time_cb(int fd, short event, void *argc)
{
    printf("timer wake up\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_add(&ev, &tv);
    event_base_dispatch(base);
}

注意是c++文件,使用的是g++编译器:

zfchen@zfchen-E440:~/my_repository/libevent/test$ vim test_03.cpp
zfchen@zfchen-E440:~/my_repository/libevent/test$ g++ -o test_03 test_03.cpp -levent
zfchen@zfchen-E440:~/my_repository/libevent/test$ ./test_03 
./test_03: error while loading shared libraries: libevent-2.2.so.1: cannot open shared object file: No such file or directory

注意编译时有用到 levent库文件,运行时出错,提示缺少文件,在网上查找后发现cannot open shared object file:No such file or directory解决方法
从错误信息中可以看出问题出在动态链接库上,我们需要手动运行动态链接库的管理命令,目的是为了让动态链接库为系统所共享,使用 ldconfig 命令,如下:

zfchen@zfchen-E440:~/my_repository/libevent$ sudo ldconfig

最后可以看到程序正常执行:

zfchen@zfchen-E440:~/my_repository/libevent/test$ ./test_03 
timer wake up
timer wake up
timer wake up
timer wake up
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值