Libevent2.1.8版在Liunx中編譯安裝遇到的問題
阿新 • • 發佈:2021-07-09
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
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.總結
像這種無定義的方法的引用,出現的問題只有兩種情況:
- 找不到對應的庫檔案
- 找不到對應的標頭檔案
所以需要自己進行指定標頭檔案和庫檔案(動態庫或靜態庫),麻煩的就是這點!