大致的安装步骤大家都可以在网上搜到,一搜一大把,我这里仅仅是把可能出现的一个问题给总结一下。
安装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表数据库使用时,...
4. **编译与安装**: 进入解压后的目录,配置、编译和安装Tokyocabinet: ``` cd tokyocabinet-1.4.53 ./configure make sudo make install ``` 5. **验证安装**: 安装完成后,可以通过运行示例程序来验证...
结合“描述”中的信息,“对数据库的使用方式进行了修改,使得开源软件能够支持分布式的访问”,我们可以理解为TokyoTyrant 和 TokyoCabinet 被用作分布式数据库系统的一部分,可能与 GPAC 集成,以提供多媒体内容的...
9. **与其他数据库的比较**:TokyoTyrant与Memcached、Redis等内存键值存储相比,其优势在于持久化存储和更高的数据一致性,但在实时性要求高的场景下可能不如后者。与MySQL等传统SQL数据库相比,TokyoTyrant更适用...
标题 "tokyoCabinet及tokyoTyrant简介" 指向了两个与数据库管理相关的开源工具,Tokyo Cabinet和Tokyo Tyrant。这两个工具由日本开发者开发,主要用于小型到中型的数据存储,尤其适合那些对数据读写速度有较高要求的...
媲美memcached的缓存服务器软件包,tokyocabinet-1.4.45.tar.gz+tokyotyrant-1.1.40.tar.gz
#### 编译安装tokyocabinet数据库 Tokyo Cabinet的安装通常涉及从源码编译,这要求用户具备一定的开发环境和编译工具链。通过执行一系列的`configure`, `make`, `make install`命令,可以将Tokyo Cabinet部署在目标...
开发者在两个月前开始接触TokyoCabinet(简称TC)和TokyoTyrant(简称TT),并编写了相应的客户端代码,这个开源项目的核心目标是促进学习、研究TC和TT,同时也鼓励社区参与优化和性能提升。 开源的源码包含三个...
tokyocabinet-1.4.45.tar.gz tokyotyrant-1.1.41.tar.gz tokyotyrant-0.11.jar ch-tokyocabinet-java-1.24.0.jar
"tokyocabinet-1.4.27.tar" 是 Tokyo Cabinet 的源代码压缩包,版本号为1.4.27。这个版本可能包含了性能优化、bug修复以及新的功能特性。通常,源代码包会包含README、INSTALL、ChangeLog等文件,用于指导用户如何...