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,所使用的的例子比較簡單,可以讓大家知道具體的操作過程。

如果有寫的不對的地方,希望能留言指正,謝謝閱讀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章