1. 程式人生 > 其它 >Libevent2.1.8版在Liunx中編譯安裝遇到的問題

Libevent2.1.8版在Liunx中編譯安裝遇到的問題

Libevent2.1.8版在Liunx中編譯安裝遇到的問題

前言:在網上找了很久,都沒有一個明確的解決方法,通過分析可能的原因,將自己實際操作及解決的成功結果記錄如下,以供遇到相似的問題,能提供思路!

1.安裝編譯Libevent的流程

## 第一步:生成configure配置檔案
./autogen.sh
## 第二步:生成Makefile
./configure
## 第三步:安裝編譯
make
make install

2.make後出現如下報錯資訊

3.分析原因

分析一:可能是libevent_openssl.so的動態庫沒找到

於是安裝openssl.so,使用的版本是1.1.1,最好對應libevent2.1.8,避免不必要的麻煩,當然熟悉了,隨便用那個版本,只有能編譯通過,正常使用就行。

安裝openssl1.1.1的步驟:

.config shared --prefix=/usr/local/ --openssldir=/usr/local/openssl

說明:可以通過./Configure --help檢視使用說明;如果libevent中要使用openssl模組,則先安裝openssl。

指定動態庫路徑

將openssl生成的動態庫指定到/usr/local/lib目錄下,重新編譯libevent:

make clean
make

結果:還是出現上圖所示的錯誤資訊

分析二:沒有找到openssl的標頭檔案,所以無法使用動態庫中的方法

從報錯資訊中看,是sample/le-proxy.c

編譯出的錯,那我們找到sample目錄下的include.am檔案:

我們看OPENSSL_INCS對應的目錄是啥,在libevent的安裝目錄下,開啟Makefile檢視:

沒有載入,說明標頭檔案是在當前目錄下的標頭檔案中,我們在libevent的include目錄下檢視:

發現沒有openssl對應的標頭檔案,所以才會找不到openssl動態庫中的方法。

4.解決方法

將安裝的openssl和解壓的libevent下的include目錄做個連結

ln -s /usr/local/include/openssl /root/libevent-master/include/openssl

然後在編譯libevent:

make
make install

可發現,已經編譯成功!

5.總結

像這種無定義的方法的引用,出現的問題只有兩種情況:

  • 找不到對應的庫檔案
  • 找不到對應的標頭檔案

所以需要自己進行指定標頭檔案和庫檔案(動態庫或靜態庫),麻煩的就是這點!