
本文共 1006 字,大约阅读时间需要 3 分钟。
今天,我尝试了编译libevent,但一直不成功。于是,我研究了memcache的编译过程,希望能找到解决方法,因为memcache的底层就是libevent。
首先,我在memcache的官网下载了1.4.24版本的源码包。下载完成后,我用tar xvf memcached-1.4.24.tar.gz命令解压,进入了memcached-1.4.24的源码目录,准备开始编译。
接下来是configure阶段。直接运行./configure,发现检测不通过,报错说缺少了libevent的库。错误信息提示我可以从http://www.monkey.org/~provos/libevent/下载,或者使用--with-libevent=/dir选项指定已有的libevent目录。
我已经配置好了libevent,于是尝试在configure命令中添加--with-libevent=/usr/local/libevent。运行后,配置成功,没有错误出现。
然后进入make & make install阶段。执行make时,出现了一个错误:memcached.c:4810:13: 错误:数组下标类型为‘char’ [-Werror=char-subscripts]。具体是在if ((ever[2] == '1' || ever[2] == '2') && !isdigit(ever[3])) {这一行。这提示我在这段代码中使用了char数组作为数组下标,导致编译错误。
查看源码,这段代码的功能是检测libevent版本,删除了“&& !isdigit(ever[3])”部分。删除这部分后,编译成功,但功能也有所影响。因此,我决定保留这部分代码,继续寻找问题所在。
重新执行make命令,成功编译。接下来进行make install,将memcache安装到系统中。
启动memcache时,我使用默认的端口11211,没有特别详细说明启动参数。运行memcached.exe -m 100后,使用telnet连接到127.0.0.1 11211,测试是否正常运行。
通过telnet连接,查看统计信息,发现memcache已经正常运行,统计数据也显示正确。因此,安装成功。
总结来说,遇到编译问题时,首先要检查依赖库的安装是否正确,然后检查源代码中的错误,逐步排查问题,最终能够顺利完成编译和安装。
发表评论
最新留言
关于作者
