最近在尝试安装ttserver来评估一下用于某个SCADA中可行性,在CentOS 6.2下安装Tokyo Tyrant时使用下列命令时出现一个错误:
> yum install tokyocabinet tokyocabinet-devel
wget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gz
tar xvzf tokyotyrant-1.1.41.tar.gz
cd tokyotyrant-1.1.41
make
报错:tokyotyrant-1.1.41/ttserver.c:611: undefined reference to tcadbsetskelmulti
。说是这个函数没有定义过,有人说直接把代码注释掉,这样做不太好。经过查询原来版本兼容性问题。
tcadbsetskelmulti 这个函数是Tokyo Cabinet 1.4.35版本中引入的新函数,这一点可以冲tokyocabinet的ChangeLog中发现,同时加入的新函数还有tcadbmulnew, tcadbmuldel,setskeltran。所以为了使用TokyoTyrant 1.1.41必须使用1.4.35版本及之后的Tokyo Cabinet,那么就换最新版本的Tokyo Cabinet吧。
> yum install gcc-c++ zlib-devel bzip2-devel
wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.47.tar.gz
tar xvzf tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47
./configure –enable-profile
make
make install
cd
wget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gz
tar xvzf tokyotyrant-1.1.41.tar.gz
cd tokyotyrant-1.1.41
./configure
make
make install
果然顺利安装ttserver