MinGW 编译libevent

转载于:www.acodelife.cn

背景:
想使用Qt Creator 编写libevent小型服务器。使用libevent,添加源码的方式,修改的比较大,所以直接把libevent编译成库使用。

因为Qt Creator自带的MinGW编译器,所以需要使用MinGW编译器编译libevent。

准备与介绍:
MSYS,Minimal GNU(POSIX)system on Window,是一个小型GNU环境,包括基本的bash,make等等。与Cygwin大致相当。MSYS是Windows下最优秀的GNU环境。
MSYS不是一个操作系统,而是一个通过将linux源代码在Win32上编译而成的UNIX工作环境。

MinGW:即Minimalist GNU for Windows。它是一些头文件和函数库的集合,该集合允许人们在没有第三方动态链接库的情况下使用GCC(GNU Compiler C)产生Win32程序。
MinGW主要由GNU binary utilities、GCC和GDB组成。同时还包括一些必要的库,例如libc(C Runtime),及专门用于Win32环境的API接口库。如果你想学习linux环境下的编程,而又不想装linux,那你就装一个MinGW吧。

下载安装MSYS-1.0.11,安装后将C:\msys\1.0\etc中的fstab.sample文件重命名为fstab。并讲fstab中内容c:/mingw /mingw 改为C:/Qt/Qt5.7.0/Tools/mingw530_32/ /mingw
其中C:/Qt/Qt5.7.0/Tools/mingw530_32/为MinGW的目录,如图:

打开MSYS ,cd到libevent目录

分别执行:./configure,make,make install ,编译成功后,在C:\msys\1.0\local可以看到头文件,编译成功的库

把三个文件夹放入新建的Qt工程目录libevent下,
修改Qt工程的.pro文件:

INCLUDEPATH += $$PWD/libevent/include

LIBS += $$PWD/libevent/lib/libevent.a \
        $$PWD/libevent/lib/libevent_core.a \
        $$PWD/libevent/lib/libevent_extra.a \

LIBS += -lWs2_32
DEFINES += WIN32
注意:在libevent例子中,并没有以下代码

WSAData data;
WSAStartup(MAKEWORD(2,2),&data);
初始化socket
需要自己的添加,不然在创建socket的时候,总是弹出assert
测试文件:
void TcpServer::StartTcpServer()
{
#ifdef WIN32
    WSAData wsaData;
    WSAStartup(MAKEWORD(2, 0), &wsaData);
#endif

    struct sockaddr_in sin;
    memset(&sin, 0, sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_port = htons(PORT);

    struct evconnlistener *listener;
    struct event_base *base = event_base_new();
    if (!base)
    {
        printf("Could not initialize libevent\n");
        //return 1;
    }
//    listener = evconnlistener_new_bind(base, listener_cb, (void *)base,
//                LEV_OPT_REUSEABLE|LEV_OPT_CLOSE_ON_FREE, -1,
//                (struct sockaddr*)&sin,
//                sizeof(sin));

//    if (!listener)
//    {
//        printf("Could not create a listener\n");
//        return 1;
//    }
//    event_base_dispatch(base);
//    evconnlistener_free(listener);
//    event_base_free(base);
}

转载于:www.acodelife.cn

猜你喜欢

转载自blog.csdn.net/wo_Niu123/article/details/85719737
今日推荐