(一)libevent安裝及簡單的使用

前言

首先我閱讀的版本是libevent-1.4.14b-stable版本。1.4系列雖然比較古老,但是它的源碼相對簡單,便於學習,並且主要的思想與2.0系列是一致的。
附上官網鏈接:http://libevent.org/

安裝及簡單使用libevent

接下來我們直接進入正題,安裝libevent-1.4。
1. 在官網上下載對應版本的包
2. tar -zxvf /your path/libevent-1.4.14b-stable.tar.gz解壓到當前目錄
3. cd libevent-1.4.14b-stable
4. ./configure
5. make && make install
6. 在/usr/local/lib目錄下應該可以看見大量的動態鏈接庫了,這時運行ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2命令(這是爲了防止在系統默認路徑下 找不到庫文件,也可以使用gcc中的-L參數來指定庫文件的位置所在)
7. 接下來就可以使用libevent庫來編寫我們的代碼了

簡單的例子(現在看不懂沒關係):

#include <stdio.h>
#include <stdio.h>
//使用libevent庫所需頭文件  
#include <event.h>  

void on_time(int sock,short event,void *arg)  
{  
    printf("hello world\n");  

    struct timeval tv;  
    tv.tv_sec = 1;  
    tv.tv_usec = 0;  

    // 事件執行後,默認就被刪除,所以需要重新添加  
    event_add((struct event*)arg, &tv);  
}  

int main()  
{  
    //  初始化事件  
    event_init();  

    //  設置定時器回調函數  
    struct event ev_time;  
    evtimer_set(&ev_time, on_time, &ev_time);  

    //1s運行一次func函數
    struct timeval tv;  
    tv.tv_sec = 1;  
    tv.tv_usec = 0;  

    //添加到事件循環中
    event_add(&ev_time, &tv);  

    //程序等待就緒事件並執行事件處理
    event_dispatch();  

    return 0;  
}  

執行命令gcc demo.c -o demo -levent編譯
運行./demo
接下來就可以看到終端上每過1s就會打印hello world出來了。

可能會遇到的問題:

error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory當編譯時出現這個錯誤信息證明gcc沒有找到你的動態鏈接庫。

解決方法:

可能的原因有兩個:
1. 你忘了執行上面提到的ln -s....命令,這是因爲運行時動態庫的搜索路徑默認是/lib以及/usr/lib路徑。或者可以使用gcc demo.c -o -L/your_path demo來指定動態鏈接庫的位置。
2. 如果還是不行, 運行命令ldconfig生效。
ldconfig通常在系統啓動時運行,而當用戶安裝了一個新的動態鏈接庫時,就需要手工運行這個命令進行更新。

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