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,所使用的的例子比較簡單,可以讓大家知道具體的操作過程。
如果有寫的不對的地方,希望能留言指正,謝謝閱讀。