Linux下libevent的简单使用

    技术2022-07-11  83

    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,所使用的的例子比较简单,可以让大家知道具体的操作过程。

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

    Processed: 0.012, SQL: 9