编译spserver-0.9.5手记
来源:互联网 发布:如何查询海关数据 编辑:程序博客网 时间:2024/04/29 13:54
首先要到spserver目录下,至于其他的,ssl之类的,我先不管了。
阅读README,按照说明修改MAKEFILE中关于libevent共享库的路径,在当前目录下,
make
报错,如下:
spioutils.cpp: 在静态成员函数‘static int SP_IOUtils::tcpListen(const char*, int*, int, int)’中:
spioutils.cpp:201:39: 错误:‘fchmod’在此作用域中尚未声明
make: *** [spioutils.o] 错误 1
fchmod是一个改变文件权限的函数,头文件为:sys/stat.h。首先,打开spioutils.cpp文件,看看其包含的头文件并没有stat.h,于是将其包含进来,我是将其包含到了spporting.hpp这个文件中。到此遇到的第一个问题解决。(难道这个版本的spserver真有这个BUG?)
遇到的第二个问题便是:
spiochannel.cpp:25:19: 致命错误:event.h:没有那个文件或目录。
打开spiochannel.cpp,25行就是包含event.h文件,没有?不存在?
解决这个问题,我是怀疑我之前修改的MAKEFILE文件是否修改正确了,仔细检查以后,发现,libevent的include路径没有写对,改过来,就把这个问题解决了。以后要分清楚是include还是lib,这两者是有差别的。
接下来,遇到第三个问题,当我执行make之后,请看下面的报错信息,这个时候已经凌晨2:45了,我当时心理无数遍臭骂软件作者,BUG一大堆。
不过,我静下心来分析了一下,是不是自己那里有问题?因为本身就
spbuffer.cpp:90:32: 错误:赋值运算的左操作数必须是左值
这个错误来说,我查看了源码以后,是在不敢怀疑是这行代码的错,于是再仔细查看README,发现了,我之前安装的libevent版本过高,而spserver之软件作者说了,只在版本1.1和1.2做过测试,于是安装libevent的1.2版本,并且修改MAKEFILE中相关路径,make,通过。
太开心了。不枉我凌晨工作呀。
赶紧测试一下demo是否ok。
不OK。
启动testsmtp失败,首先是libspserver.so找不到,这个好解决,建立一个符号链接就可以了。注意,建立符号链接的时候,最好使用绝对路径建立。
解决这个问题以后,启动testsmtp还是失败,抓狂!!!
./testsmtp: symbol lookup error: ./testsmtp: undefined symbol: _ZTI21SP_SmtpHandlerFactory
一天之后,在我苦寻解决方案无果之后,很郁闷的检查起编译过程。我使用ldd查看了需要的动态链接库,一个一个的检查起来,意外的发现诡异事件:
/usr/lib底下有个动态链接名不副实,就是libspserver.so指向了libevent.so
挂羊头卖狗肉么这是!!
于是知道是自己之前链接弄错了,赶紧作相应修改,OK。
提醒自己:一定要非常小心。
- 编译spserver-0.9.5手记
- SPServer
- spserver
- Debian内核编译手记
- cygwin编译ACE手记
- OpenFOAM-1.5 编译手记
- MapServer5.6.1编译手记
- 编译OPENJDK手记
- ContaCamw编译手记
- SPServer 简介
- spserver地图
- VS2003下面编译log4cpp-0.3.5rc2手记
- boost 1.39编译安装手记
- 编译OGRE v1.7手记
- gcc-4.5.0编译手记
- linux下Emacs编译手记
- 编译原理手记01-概要
- windows下 QT5编译手记
- 《精通Oracle10g PL/SQL编程》 是本oracle入门的好书
- 当今世界最为经典的十大算法
- poj 1789 Truck History
- Linux命令使用记录
- 编程之美 2.1 求一个数的二进制表示中1的个数
- 编译spserver-0.9.5手记
- RAM由512M改成256M
- FLV地址
- R语言生成保存图片方法
- socket网络编程中的同步,异步,阻塞式,非阻塞式,有何联系与区别
- 关于fflush(stdin)清空输入缓存流(C/C++)
- poj 1502 MPI Maelstrom
- 终于实现了用SAP(伪)解费用流
- First ModalPopupExtender example and some problems I run into