libevent_1:环境搭建

libevent 环境搭建

windows

环境准备: openssl-1.1.1 、 zlib-1.2.11 、libevent 2.1.8 、perl-5.24(编译openssl要用)、nasm-2.13.03(编译openssl要用) 、VS2017 我的是以上版本,都在官方能找得到,我编译的都是64位。

  1. 编译zlib , 我自己写的批处理来编译的,很简单,把路径改成自己的就可以了。。都以管理员权限运行!
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
set OUT="D:\c++\lib\out\vs2017_64\zlib"
call %VS%
cd zlib-1.2.11
nmake /f win32\Makefile.msc clean
nmake /f win32\Makefile.msc
md %OUT%\lib
md %OUT%\bin
md %OUT%\include
copy /Y *.lib %OUT%\lib
copy /Y *.h %OUT%\include
copy /Y *.dll %OUT%\bin
copy /Y *.exe %OUT%\bin
pause
  1. 编译openssl
@echo "开始编译openssl"
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
set OUT="D:\c++\lib\out\vs2017_64\openssl"
call %VS%
D:
cd D:\c++\lib\openssl-1.1.1
perl Configure VC-WIN64A --prefix=%OUT%    
nmake clean
nmake
nmake install
@echo "编译openssl结束"
pause
  1. 编译libevent ,这里要指定openssl目录,不然该模块不会编译!
@echo "开始编译libevnet"
set VS="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
set OUT="D:\c++\lib\out\vs2017_64\libevent"
call %VS%
d:
cd D:\c++\lib\libevent-master
nmake /f Makefile.nmake clean
nmake /f Makefile.nmake OPENSSL_DIR=D:\c++\lib\out\openssl
md %OUT%\lib
md %OUT%\bin
md %OUT%\include
copy /Y *.lib %OUT%\lib
xcopy /S/Y include %OUT%\include
xcopy /S/Y WIN32-Code\nmake %OUT%\include
copy /Y *.dll %OUT%\bin
copy /Y *.exe %OUT%\bin
@echo "编译libevnet结束"
pause

编译的时候应该会出错,那是因为提示找不到 openssl的库名。 这时要打开 test/Makefile.nmake 这个文件 找到 SSL_LIBS= … 这一行,将这提示出错两个文件名,改为编译openssl时生成目录(我的D:\c++\lib\out\openssl)的两个lib文件
SSL_LIBS=..\libevent_openssl.lib (OPENSSL_DIR)\lib\libssl.lib(OPENSSL_DIR)\lib\libcrypto.lib gdi32.lib User32.lib

运行test目录下的 regress.exe 可以查看哪些模块编译成功
regress.exe > out.txt
打开 out.txt 可以看到 bufferevent_zlib: SKIPPED zlib模块没有编译!

打开test/Makefile.nmake文件 ,
在 REGRESS_OBJS=。。 的最后加上 regress_zlib.obj
在CFLAGS=。。 加上zlib的头文件 /I../zlib/include
在LIBS=。。 加上zlib的库文件 ..\zlib\lib\zdll.lib
将zlib1.dll 复制到 test目录下。
在WIN32-Code\nmake\event2\event-config.h文件中 定义 #define EVENT__HAVE_LIBZ

在次运行regress.exe > out.txt ,看哪些模块编译成功,这次应该都可以了。

Linux编译

环境准备:(我的是centos7)
yum install perl g++ make automake libtool unzip

  1. 编译zlib
    ./configure ;生成makefile
    make
    make install

  2. 编译openssl
    ./config
    make
    make install

  3. 编译libevent
    ./autogen.sh
    ./configure
    make
    make install

执行 test/regress > log.txt 查看哪些模块生成 应该都没啥问题,如果有问题,可能是openssl的版本不对,可以换成 openssl-1.0.2q 版本 重新编译试一下。。

测试程序

git地址: http://121.4.70.4:3000/adminPyf/libevent_study.git

libevent_study/first_libevent

同时兼容windows、linux。

#include <iostream>
#include<event2/event.h>

int main()
{
#ifdef _WIN32
    //初始化socket库
    WSADATA wsa;
    WSAStartup(MAKEWORD(2, 2), &wsa);
#endif
    //创建libevent上下文
    event_base* base =  event_base_new();
    if (base) {
        std::cout << "hello libevent! -- ";
    }

    return 0;
}

libevent_1:环境搭建

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动到顶部