Libevent学习笔记

Libevent 学习笔记

为了准备实习,提前学习一下Libevent,由于官方文档主要都是在介绍库的内容,有很多坑还是得自己踩,所以开一篇文章记录一下

安装&&部署

安装还是比较容易,安装github上的步骤就可以顺利完成,就是make install这一步是需要root权限的,不然会出现拒绝访问的情况。
安装完成之后按照官方文档的教程写了一个很简单的log代码

#include 
#include 

static FILE *logfile = NULL;
static void discard_cb(int severity, const char *msg)
{
    /* This callback dose nothing. */
}

static void write_to_file_cb(int severity, const char *msg)
{
    const char *s;
    if(!logfile)
        return;
    switch (severity) {
        case _EVENT_LOG_DEBUG:  s="debug"; break;
        case _EVENT_LOG_MSG:    s="msg";   break;
        case _EVENT_LOG_WARN:   s="warn";  break;
        case _EVENT_LOG_ERR:    s="error"; break;
        default:                s="?";     break;
    }
    fprintf(logfile, "[%s]%s\n", s, msg);
}

/* Turn off all logging form Libevent */
void suppress_logging(void)
{
    event_set_log_callback(discard_cb);
}

/* Redirect all Libevent log messages to the C stdio file 'f' */
void set_logfile(FILE *f)
{
    logfile = f;
    event_set_log_callback(write_to_file_cb);
}

int main(int argc, char const *argv[])
{
    FILE *file = fopen("log.txt", "w");
    set_logfile(file);
    write_to_file_cb(_EVENT_LOG_MSG, "Hello world");
    suppress_logging();
    return 0;
}

编译命令为

gcc test.c -levent

这时如果直接运行会报找不到库文件

error while loading shared libraries: libevent.so.2.2.0

查了stackoverflow,发现需要把/usr/local/lib下的文件链接到/usr/lib才可以

sudo ln -s /usr/local/lib/libevent.so.2.2.0 /usr/lib/libevent.so.2.2.0

你可能感兴趣的:(Linux)