码迷,mamicode.com
首页 > 其他好文 > 详细

libevent安装与libevent定时器

时间:2015-08-03 22:45:44      阅读:377      评论:0      收藏:0      [点我收藏+]

标签:c++   mac   libevent   网络编程   qt   

主要是参考了一下网上的方法,http://blog.sina.com.cn/s/blog_4b93170a0100mbm9.html
并自己实际操作了一下,针对自己出现的一些情况进行说明。并在实际编译链接过程中进行实践。
这些其实都是一些基本的简单操作,但是对于我这种菜鸟级别的小白来说,还是挺好的,高手请口下留情。

本文主要针对mac系统,对linux系统也适用。

首先从libevent的官网(http://libevent.org)中下载压缩包,这里我下的是到目前为止最新的版本,libevent-2.0.5-stable,下完后解压。

命令行进入libevent的主目录
cd libevent-2.0.5-stable

然后执行命令:
./configure -prefix=/usr
这里是配置库安装在 /usr 文件夹下
技术分享
然后就会有一堆的checking,不管它们。

接着执行命令:make
技术分享

然后用管理员权限进行安装
命令:make install
技术分享
到此,就安装完成了。


下面我们看libevent是否真的安装成功,执行命令:ls -al /usr/lib | grep libevent
如果出现下图类似的结果,表示安装成功:
技术分享

下面我们进行一个简单的计时器程序来测试libevent。

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

using namespace std;

struct event ev;
struct timeval tv;

void time_cb(int fd, short event, void *argc)
{
    //printf("timer wakeup\n"); //如果是用这句输出而不是用下面的输出,在我电脑中是没有输出的,如果是界面函数的话,还会卡住.不知道什么原因
    cout<<"timer wakeup"<<endl;
    event_add(&ev, &tv); // reschedule timer
}

int main()
{
    cout<<"test"<<endl;

    struct event_base *base = event_init();     //初始化
    tv.tv_sec = 2; // 2s period     设置定时的时间
    tv.tv_usec = 0;
    evtimer_set(&ev, time_cb, NULL);    //初始化关注的事件,并设置回调函数
    event_add(&ev, &tv);        //注册事件
    cout<<"start"<<endl;
    event_base_dispatch(base);  //进入消息循环和消息分发

    cout<<"end"<<endl;
    return 0;
}



这里如果用命令行编译的话,注意要加上libevent外部链接库,我就是没有加,一直弄,弄了好久才弄好。
如果直接的 g++ -o a a.cpp
那么会出现以下错误
技术分享
这说明没有包含头文件,那么我们编译的时候就要加上libevent的include的路径
命令:g++ -o a a.cpp -I /usr/include
那么这时候编译没有错误,但是链接错误了,如图所示:
技术分享
这是没有链接libevent库的原因。之前绝大数情况下都是在windows下的IDE vs里面写程序的,命令行下编译链接没怎么弄过,
上网查了一下链接的命令后,下面我们可以这样来进行链接:
g++ -o a a.cpp /usr/lib/libevent.a -I /usr/include 
这样就编译链接通过了。
技术分享

运行程序:
./a
技术分享

至此,libevent的安装以及第一个libevent的例子实现了。

另外,如果不是命令行下编译链接呢?又是怎么样操作呢?下面针对Qt5 来进行讲解。
其实,只需要在项目文件 .pro 中添加include目录和lib链接库就可以了。
INCLUDEPATH += /usr/include
LIBS += /usr/lib/libevent.a
如图所示:
技术分享

运行程序,则可以在应用程序输出中看到结果:
技术分享

ok,终于实现了基本的操作。

版权声明:本文为博主原创文章,未经博主允许不得转载。

libevent安装与libevent定时器

标签:c++   mac   libevent   网络编程   qt   

原文地址:http://blog.csdn.net/u013592466/article/details/47262821

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!