安装
在安装 super-smack 之前,需要先安装一些依赖包
在 挂载光盘 里面下载自己系统的这几个依赖包:mysql-devel、flex、byacc 、bison
安装好后下载 super-smack 包,网上只找到1.2版的安装包,可惜我的linux虚拟机服务器 无法联网(联网问题无法解决),所有我用的是1.2版本,和1.3大致流程都差不多。
下载地址:http://jeremy.zawodny.com/mysql/super-smack/
下载好后安装:
tar -xzvf super-smack-1.2.tar.gz && cd super-smack-1.2
./configure --with-mysql --with-mysql-lib=/usr/local/mysql/lib --with-mysql-include=/usr/local/mysql/include;make;make install
--with-mysql(指定数据库类型)
--with-mysql-lib(设置mysql/lib库的路径)
--with-mysql-include(设置mysql/include路径)
下面是我安装时遇到的报错以及解决方法:
引用文件缺失
报错:
dictionary.h: In member function ‘void Unique_dictionary::set_template(const char*)’:
dictionary.h:93: 错误:‘strlen’在此作用域中尚未声明
.......
super-smack.cc: In function ‘void print_engines()’:
super-smack.cc:126: 错误:‘strlen’在此作用域中尚未声明
在 ./super-smack-1.2/src/ 文件夹下的 dictionary.h文件和super-smack.cc文件里面 添加 代码(引用语句)
#include <string.h>
安装过程的 全部 警告不用在意,不影响使用
精度缺失报错
修改query.cc
第193行:
< int len = 0, num_recs = 0;
修改成:
> long len = 0; int num_recs = 0; //注意这里逗号变分号
第199,200行
< int str_len = (*i).first.length();
< if((unsigned)p + str_len + 3 *sizeof(int) < (unsigned)p_end )
修改成:
> long str_len = (*i).first.length();
> if((long)p + str_len + 3 *sizeof(int) < (long)p_end )
第219行
< len = (unsigned)p - (unsigned)buf;
修改成:
> len = (long)p - (long)buf;
运行时报错
报错:
error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such
执行命令:ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/
结尾
引用:http://blog.51cto.com/yangxiongchun/1419823
引用:https://blog.youkuaiyun.com/zhanjianshinian/article/details/43964361