Linux下libevent的简单使用

libevent是个高效的异步事件通知库,本文主要讲述在Linux下如何编译及简单使用该库。


一 下载

本文写作时使用的版本是2.1.11,下载地址是https://github.com/libevent/libevent/releases/tag/release-2.1.11-stable
在这里插入图片描述
本人下载的是zip文件。


二 编译

把第一步下载的压缩文件放到linux下。

先解压,然后按照github上给的教程,在源码根目录下新建build目录,并cd进入,最后执行下面的2个命令进行编译(需要事先安装cmake),

cmake .. 
make

如果没有出现错误,就表示编译成功。


三 使用

在别的地方创建一个目录test,里面再创建以下几个目录和文件,如下,
在这里插入图片描述
然后把libevent源码目录下的build目录里生成的lib库拷贝到test/libevent目录下,只需要拷贝.a的库文件就行了,如下,
在这里插入图片描述
接着在libevent源码目录下找到include目录,如下,
在这里插入图片描述
同样,也拷贝到test/libevent目录下。

在libevent源码目录下的build目录里同样也有个include目录,里面有2个文件:evconfig-private.h和event2/event-config.h,把这2个文件拷贝到test/libevent/include里,按照对应位置放置。

最后,在test/src下创建main.c,至此,整体工程结构如下,
在这里插入图片描述
main.c内容如下,

#include <stdio.h>
#include <time.h>
#include <event.h>


void callback(int fd, short event, void *arg) //回调函数
{
    
    
    printf("hello world\n");
}

int main(void)
{
    
    
    struct event_base *base = event_init(); //初始化libevent库
    struct timeval tv;
    struct event ev;

    tv.tv_sec = 2; // 2s后执行回调
    tv.tv_usec = 0;
    
    event_set(&ev, -1, 0, callback, NULL); //初始化event
    event_base_set(base, &ev);
    event_add(&ev, &tv); //添加event
    
    event_base_dispatch(base); //分发事件
    
    
    return 0;
}

CMakeLists.txt内容如下,

cmake_minimum_required (VERSION 3.5)

project(test)

set (EXECUTABLE_OUTPUT_PATH ${
    
    PROJECT_SOURCE_DIR}/bin)

include_directories(libevent/include)

link_directories(libevent/lib)

add_executable(main src/main.c)

target_link_libraries(main event)

写好已上2个文件后,cd到test/build目录下,然后执行cmake .. && make,最后在bin目录下可以看到生成了main,然后执行./main来运行程序,等待2秒后打印如下,
在这里插入图片描述
PS:关于cmake的使用可以参考这篇文章


四 总结

本文主要讲述如何编译及使用libevent,所使用的的例子比较简单,可以让大家知道具体的操作过程。

如果有写的不对的地方,希望能留言指正,谢谢阅读。

猜你喜欢

转载自blog.csdn.net/whahu1989/article/details/107072866