大致的安装步骤大家都可以在网上搜到,一搜一大把,我这里仅仅是把可能出现的一个问题给总结一下。
安装tokyocabinet的时候,解压完./configure的时候,提示错误缺少zlib.h文件,这个时候就需要下载zlib和bzip2压缩包,先安装着两个软件包,然后重新回到tokyocabinet目录下,./configure发现好使了,出现了ready install的字样,然后make,接着sudo make install,就ok了,最后别忘记安装tokyotyrant。
64位linux安装tokyocabinet的时候,即使安装了zlib和bzip2这两个软件包,也有可能出现bad value的错误,这是因为前面安装的这两个软件包不是以64bit的形式进行编译的。
言归正传,说说具体问题吧。
问题:
1、tc make file时候,当碰到依赖libbz2.a或者libz.a这两个库的时候会出现编译错误。
诸如:
缺少zlib.h这个文件
//******************************************************************************************************************************//
/usr/bin/ld: /usr/local/lib/libbz2.a(bzlib.o): relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libbz2.a: could not read symbols: Bad value
collect2: ld 返回 1
make: *** [libtokyocabinet.so.8.22.0] 错误 1
//******************************************************************************************************************************//
/usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libz.a: could not read symbols: Bad value
make: *** [libtokyocabinet.so.8.22.0] 错误 1
//******************************************************************************************************************************//
凡是这两个问题,很重要一个原因是bzip的开发依赖包没有装好,或者没装。
首先要下载这两个安装包
1、bzip2-1.0.4.tar.gz
2、zlib-1.2.3.tar.gz
我上网找过很多解决方法。但是问题依旧,依然编译不过去。
即使用了ubuntu的apt-get install libbz2-dev。。。
网上一般都是修改bzip源码包的Makefile文件。(装个小东西,知识一定要丰富!)
网上的解决方法:
在gcc编译参数中加入-fPIC(对于该参数,我在备注中有解释,适合菜鸟级c语言用户理解)
但是问题,有时后就只刁难你,还是不怎么奏效。
我总结了一下方法:
1、注意顺序问题:(这三个东西一环扣一环,真麻烦)
如果发现 libbz2.a: could not read symbols: Bad value
就应该把/usr/local/lib中的libbz2.a删掉
进入解压缩的zlib-1.2.3目录,用make clean命令清理一下。
同样,/usr/local/lib/libz.a: could not read symbols
操作同上,删掉libz.a,把bzip2-1.0.4目录的编译文件清理一下。
如果找不到这两个文件的位置,可以在终端敲上:
find -name libbz2.a
....
2.修改zlib-1.2.3的Makefile文件
把gcc的编译参数加上 -fPIC
原文:CFLAGS=-O3 -DUSE_MMAP
修改为:CFLAGS=-O3 -DUSE_MMAP -fPIC
如果还是过不去,劝你硬来CC=gcc 直接后面跟上-fPIC让他们全部独立编译
重申:如果你之前编译过了,一定要用make clean清掉,否则还是徒劳。。
最后make 还有 make install
3.修改bzip2-1.0.4的Makefile文件
CC=gcc -fPIC 《===这个就是我发飙的结果,全部让他 -fPIC
AR=ar
RANLIB=ranlib
LDFLAGS=
BIGFILES=-D_FILE_OFFSET_BITS=64
CFLAGS=-fPIC -Wall -Winline -O2 -g $(BIGFILES) 《===当然这里也可以加上
同样,bzip2有一个Makefile-libbz2_so的文件,编译时会调用,当然你也可以单个编译:
make -f Makefile-libbz2_so
make clean <------------保守建议,还是clean一下
make
make install
具体bzip2的安装方法可以参照:
http://lamp.linux.gov.cn/Linux/LFS-6.2/chapter06/bzip2.html
最后重新安装tc
我用的是最新版本:tokyocabinet-1.4.31.tar.gz
估计应该修复了一些bug。
make clean
make
当输出:
#================================================================
# Ready to install.
#================================================================
一切ok,装吧 make install
测试下tc
/web/ttserver# tchmgr create test.tch
/web/ttserver# ls
test.tch
/web/ttserver# tchmgr put test.tch 1 test1
/web/ttserver# tchmgr put test.tch 2 test2
/web/ttserver# tchmgr get test.tch 2
test2
测试成功!
32位操作系统要支持大于2G的db文件请加上” --enable-off64”(在./configure后面),否则会导致严重问题,db文件超过2G时表现为:1,Tcrmgr inform显示记录数为0,实际数据并没有被清空;2,连接暴多但都操作失败,ttserver.log内提示“ERROR ttacceptsock failed”和“ERROR do_mc_set: operation failed”等;3,Ttserver检测到文件异常会悄悄退出。
分享到:
相关推荐
Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念。 当做为Hash表数据库使用时,...
对数据库的使用方式进行了修改,使得开源软件能够支持分布式的访问。
httpsqs libevent tokyocabinet 安装包,附上安装文档(实际操作的)
媲美memcached的缓存服务器软件包,tokyocabinet-1.4.45.tar.gz+tokyotyrant-1.1.40.tar.gz
tokyocabinet-1.4.48.tar.gz
tokyotyrant-1.1.40.tar.gz centos 7 x64系统应用 配合 tokyocabinet-1.4.45.tar
tokyocabinet-1.4.30.tar
tokyocabinet-1.4.45.tar.gz
东京暴君数据库的客户端封装,使东京暴君可以通过网络连接
NULL 博文链接:https://kernaling-wong.iteye.com/blog/464421
NULL 博文链接:https://mtnt2008.iteye.com/blog/709787
Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成
NULL 博文链接:https://daniel304430062.iteye.com/blog/492587
Tokyocabinet 是一个DBM的实现,这里的数据库由一系列key-value对的记录构成。Key和value都可以是任意长度的字节序列. 本文档对Tokyocabinet之hash进行了分析,文章中有简单的流程图
Tokyo cabinet C 库的 Ruby绑定代码API Tokyo cabinet 是一个管理数据库的库。该数据库是一个单一的数据文件,每个记录为关键字和值。每个关键字和值是可变长度的字节序。二进制数据和字符串都可作为关键字或值。...
tokyocabinet.cr:TokyoCabinet的Crystal客户端
Tokyo Cabinet 是日本人 平林幹雄 开发的一款 DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 Berkeley DB 等 DBM 的几...tokyocabinet.jar是该数据库的接口API
tokyocabinet 为 tokyocabinet的安装目录 //--- configure 注释 完毕 make make install 这样安装成功了。可以去自己的安装目录 然后是生成咱们需要的数据库文件 cd 安装目录/db/ /usr/...
tokyocabinet-1.4.45.tar.gz tokyotyrant-1.1.41.tar.gz tokyotyrant-0.11.jar ch-tokyocabinet-java-1.24.0.jar
一个小型快速数据库的安装使用及原理介绍。