您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關windows平臺如何使用VS2017編譯libevent的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
一 依賴庫編譯
先要將其依賴的庫編譯好,其中openssl需要編譯到libevent中,編譯成libevent_openssl.lib庫,zlib在新版本中只有示例用到。
1)windows 平臺使用 VS2017 編譯 openssl 源碼
參考前面的文章
openssl 默認編譯到 C:\Program Files (x86)\OpenSSL 目錄,包含收文件,lib文件和dll文件,待會需要配置此路徑,或者直接把編譯好的openssl庫復制到指定路徑中。
2)使用 VS2017 編譯 zlib 源碼
1) 官方網站
http://www.zlib.net/
2)編譯工具:VS2017社區版本
下載地址
http://ffmpeg.club/tools_download.html
3)下載zlib1.2.11源碼
下載地址
http://ffmpeg.club/libevent.html
4) 編譯步驟
(1)進入控制臺(運行 CMD),或者編寫批處理bat文件
(2)運行vs編譯環境
打開菜單中VS2017中有對應的命令行工具,把地址復制過來
編譯32位庫版本
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat
編譯64位庫版本
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
運行后出現如下內容
(3)進入zlib源碼嗎目錄
cd zlib-1.2.11
(4)用nmake編譯
nmake -f win32/Makefile.msc -
編譯好后生成的動態庫 zdll.dll zdll.lib 和靜態庫zlib.lib都在zlib-1.2.11根目錄下。
二 libevent編譯環境準備
操作系統:windows 10 64位
編譯工具:VS2017社區版本
下載地址
http://ffmpeg.club/tools_download.html
libevent 2.1.8 源碼
下載地址
http://www.libevent.net/download
三 編譯libevent源碼
1)依賴安裝編譯
編譯工具:VS2017社區版本
下載地址
http://ffmpeg.club/tools_download.html
編譯好openssl安裝后復制到 D:\lib\openssl 路徑
libevent_openssl.lib 庫需要,如果不用此庫可以不編譯openssl
編譯好zlib 安裝在D:\libevent\zlib-1.2.11\
新版本libevent已經和zlib分離,但是示例有用zlib,如果不需要此示例可以不編譯zlib
2) 編譯步驟
(1)進入控制臺(運行 CMD),或者編寫批處理bat文件
(2)運行vs編譯環境
打開菜單中VS2017中有對應的命令行工具,把地址復制過來
編譯32位庫版本
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat
編譯64位庫版本
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
(3)進入libevent源碼嗎目錄
cd libevent-master
(4)清理之前的編譯
nmake /f Makefile.nmake clean
(5)編譯libevent
nmake /f Makefile.nmake OPENSSL_DIR=D:\lib\openssl
OPENSSL_DIR 是openssl庫的路徑,之前版本需要制定zlib庫路徑,新版本不需要
(6)編譯包含了libevent的庫項目和示例項目,編譯的示例項目由于用了zlib并且openssl版本比較舊,所以會產生問題
3)編譯中出現的問題
(1)示例中的openssl問題
出現的問題
編譯錯誤、會顯示找不到openssl的ssleay32.lib和libeay32.lib庫
原因
舊版本的openssl和新版本采用不同庫名
解決方案
打開test目錄下的Makefile.nmake
找到 SSL_LIBS=..\libevent_openssl.lib $(OPENSSL_DIR)\lib\libeay32.lib $(OPENSSL_DIR)\lib\ssleay32.lib gdi32.lib User32.lib
修改為 SSL_LIBS=..\libevent_openssl.lib $(OPENSSL_DIR)\lib\libssl.lib $(OPENSSL_DIR)\lib\libcrypto.lib gdi32.lib User32.lib
(2)示例中的zlib問題
出現的問題
默認不編譯zlib示例,設置編譯后找不到zlib庫和頭文件
解決方案
在編譯libevent之前設置編譯zlib示例
修改WIN32-Code\nmake\event2\event-config.h
添加#define EVENTHAVE_LIBZ
修改原因在示例代碼test\regress_bufferevent.c 1382行中做了如下判斷
#ifdef EVENTHAVE_LIBZ
LEGACY(bufferevent_zlib, TT_ISOLATED),
#else
{ "bufferevent_zlib", NULL, TT_SKIP, NULL, NULL },
#endif
修改zlib示例的編譯項目
打開test目錄下的Makefile.nmake
修改LIBS,設置zlib庫文件路徑
LIBS=..\libevent.lib ws2_32.lib shell32.lib advapi32.lib D:\libevent\zlib-1.2.11\zdll.lib
修改CFLAGS添加zlib頭文件路徑
CFLAGS=/I.. /I../WIN32-Code /I../WIN32-Code/nmake /I../include /I../compat /DHAVE_CONFIG_H /DTINYTEST_LOCAL $(SSL_CFLAGS) -ID:\libevent\zlib-1.2.11
感謝各位的閱讀!關于“windows平臺如何使用VS2017編譯libevent”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。