跟着《LinuxC/C++服务器开发实践》这本书学习的时候,在第十章“基于Libevent的FTP服务器”上开始有个简单例子:设置一个定时器,然后每隔10秒就打印一次"timer wakeup"。代码如下:
#include<sys/types.h>
#include<event2/event-config.h>
#include<stdio.h>
#include<event.h>
struct event ev;
struct timeval tv;
void time_cb(int fd,short event,void* arg)
{
printf("timer wakeup!\n");
event_add(&ev,&tv);
}
int main()
{
struct event_base *base=event_init();
tv.tv_sec=10;
tv.tv_usec=0;
evtimer_set(&ev,time_cb,NULL);
event_base_set(base,&ev);
event_add(&ev,&tv);
event_base_dispatch(base);
}
写完之后使用编译命令如下:
gcc test1.c -o test1 -I /opt/libevent/include/ -L /opt/libevent/lib/ -levent
编译后在命令行用./test1执行时,显示错误
./test1: error while loading shared libraries: libevent-2.1.so.7: cannot open shared object file
参考网上的文章,解决办法:首先找到你的libevent-2.1.so.7所在位置,我的是在/opt/libevent/lib下面,然后将这个绝对路径加到
/etc/ld.so.conf文件中,如图:
之后再在命令行输入ldconfig,按回车,问题就解决了。