主要是参考了一下网上的方法,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。
代码参考下面的这位同学:http://blog.csdn.net/happyanger6/article/details/7272433
#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,终于实现了基本的操作。
版权声明:本文为博主原创文章,未经博主允许不得转载。