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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Windows上编译libevent需要使用类Unix环境的工具,比如Cygwin或MinGW。下面以MinGW为例介绍如何编译libevent: 1. 下载libevent源代码 你可以从libevent官网上下载最新版本的源代码。下载后将源代码解压到一个目录中。 2. 安装MinGW 你需要安装MinGW,可以从MinGW官网上下载安装程序,按照安装向导进行安装即可。 3. 编译libevent 打开命令行窗口,进入到libevent源代码目录,执行以下命令: ``` ./configure --prefix=/usr/local --disable-shared make make install ``` 其中,`--prefix=/usr/local`选项指定安装路径为`/usr/local`,`--disable-shared`选项禁用共享库的编译。`make`命令用于编译源代码,`make install`命令用于安装编译后的文件。 4. 配置环境变量 将MinGW的bin目录添加到系统环境变量中,以便在命令行窗口中可以直接访问MinGW的工具。比如,如果你的MinGW安装在`C:\MinGW`目录下,那么需要将`C:\MinGW\bin`加入到系统环境变量中。 至此,你就成功编译libevent库,并将其安装到了系统中。在编译你的程序时,需要指定libevent的头文件和库文件路径,以及链接libevent库。比如,使用gcc编译时,可以使用以下命令: ``` gcc -I/usr/local/include -L/usr/local/lib -levent your_program.c -o your_program ``` 其中,`-I`选项用于指定libevent的头文件路径,`-L`选项用于指定libevent的库文件路径,`-levent`选项用于链接libevent库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值