zoukankan      html  css  js  c++  java
  • tokyo tyrant: 如何搭建这个tt server tokyo tyrant and tokyo cabinet

    这两天在搭一个tt server,小日本写的一个cache服务器吧,性能据说比memcached要高好多,具体参数不详

    这两天的首要任务就是搭建,搭建过程是一路坎坷,主要原因是linux基础太过薄弱

    1. 在root账号下面,自己安装,一路顺风,啥都没问题,其实是照葫芦画瓢,最基本的安装,所以也不会有问题

    2. 测试环境不可能提供root权限,所以必须要规避root权限进行安装,这样就遇到了各种各样的问题

    在安装tokyo cabinet时候报错:

    configure: error: bzlib.h is required

    解决办法1:

    apt-get install libbz2-dev

    这样我在root权限下是可以解决的,ok,或者是root下不会遇到问题

    但根本愿意是什么呢?

    是由于缺少了两个依赖的包安装(叫法不大准确)

    1. zlib-1.2.4

    2. bzip2-1.0.5

    网上说有先后顺去,但我没去验证,仅是按照上面的顺序进行安装的

    zlib安装:

    ./configure

    make

    make install

    bzip安装

    make

    make install

    然后再去安装tokyo cabinet

    ./configure

    这个时候可能还是会报错误,提示configure: error: bzlib.h is required,但是在指定的--prefix中,或许你可以看到,但是还是会报这个错误,看config.log,它找的路径还是在/usr里面,而不是我在./configure中指定的--prefix中的位置,这个时候,在./configure的时候,就需要再添加两个参数

    --with-zlib,指定它的路径,具体可以看./configure --help,自己走了好多弯路,主要就是没有自己看configure的help

    然后进行configure, 可能还是会报libbz2.h找不到,那就需要在configure中继续挂参数--with-bzip的位置了

    安装tokyo tyrant的时候,可能还是会有类似的错误,同样指定位置解决

    具体安装顺序,按照tokyo cabinet和tokyo tyrant的文档就可以搞定了

    接着遇到的错误是在make install的时候

    if uname -a | egrep -i 'SunOS' > /dev/null ; \
              then \
                gcc -g -O2 -std=c99 -Wall -fPIC -fsigned-char -O2 -shared -Wl,-G,-h,libtokyocabinet.so.9 -o libtokyocabinet.so.9.6.0 \
                  tcutil.o tchdb.o tcbdb.o tcfdb.o tctdb.o tcadb.o myconf.o md5.o -L. -L/home/laurence/tt/tc/lib -L/home/laurence/lib -L/usr/local/lib -lbz2 -lz -lrt -lpthread -lm -lc  ; \
              else \
                gcc -g -O2 -std=c99 -Wall -fPIC -fsigned-char -O2 -shared -Wl,-soname,libtokyocabinet.so.9 -o libtokyocabinet.so.9.6.0 \
                  tcutil.o tchdb.o tcbdb.o tcfdb.o tctdb.o tcadb.o myconf.o md5.o -L. -L/home/laurence/tt/tc/lib -L/home/laurence/lib -L/usr/local/lib -lbz2 -lz -lrt -lpthread -lm -lc  ; \
              fi
    /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 returned 1 exit status
    make: *** [libtokyocabinet.so.9.6.0] Error 1
    


    为便于被搜索到,再贴一遍,嘿嘿

    if uname -a | egrep -i 'SunOS' > /dev/null ; \
              then \
                gcc -g -O2 -std=c99 -Wall -fPIC -fsigned-char -O2 -shared -Wl,-G,-h,libtokyocabinet.so.9 -o libtokyocabinet.so.9.6.0 \
                  tcutil.o tchdb.o tcbdb.o tcfdb.o tctdb.o tcadb.o myconf.o md5.o -L. -L/home/laurence/tt/tc/lib -L/home/laurence/lib -L/usr/local/lib -lbz2 -lz -lrt -lpthread -lm -lc  ; \
              else \
                gcc -g -O2 -std=c99 -Wall -fPIC -fsigned-char -O2 -shared -Wl,-soname,libtokyocabinet.so.9 -o libtokyocabinet.so.9.6.0 \
                  tcutil.o tchdb.o tcbdb.o tcfdb.o tctdb.o tcadb.o myconf.o md5.o -L. -L/home/laurence/tt/tc/lib -L/home/laurence/lib -L/usr/local/lib -lbz2 -lz -lrt -lpthread -lm -lc  ; \
              fi
    /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 returned 1 exit status
    make: *** [libtokyocabinet.so.9.6.0] Error 1

    这个提示很明显了,需要重新编译,加挂参数-fPIC

    这个怎么搞呢?

    1. zlib-1.2.4

    make前,修改Makefile

    CC=gcc -fPIC

    CFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1
    #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
    #CFLAGS=-g -DDEBUG
    #CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
    #           -Wstrict-prototypes -Wmissing-prototypes

    第一处是最外层的貌似,我是在第二处依旧不起作用的时候,在第一处也添加了

    记得make前或者configure前,先进行make clean,或者将之前指定的目录prefix参数中的内容全部rm掉,比较彻底和暴力

    2. bzip2-1.0.5

    同上,修改Makefile,

    # To assist in cross-compiling
    CC=gcc -fPIC
    AR=ar
    RANLIB=ranlib
    LDFLAGS=

    BIGFILES=-D_FILE_OFFSET_BITS=64
    CFLAGS=-Wall -Winline -O2 -fPIC -g $(BIGFILES)

    然后进行make, make install

    这样,和上面的一起,我就没有遇到异常了,可以正常启动了,网上的方法很多,但是这个方法是解决我所遇到的问题的最佳实践了,可能别的问题没有遇到吧都

    待跟进的问题:

    1. zlib-1.2.4

    2. bzip2-1.0.5

    上面这两个包的作用,仅知道是linux下的压缩用来

    3. -fPIC参数的意义

    还没有去进行自己研究

    解决问题来自网络google

    主要引自:http://henry2009.javaeye.com/blog/462705 这个是我的母版,我基本就是这个解决的

    以及:http://blog.csdn.net/pwlazy/archive/2010/02/20/5313405.aspx 解决了我root权限下安装问题,或者说具有较高权限下的是可以的

    forward.molly.宝儿 独自行走
  • 相关阅读:
    Java Varargs 可变参数使用
    GitLab 如何删除 Forked from
    Git Clone 的时候遇到 Filename too long 错误
    Spring Boot 如何部署到 Linux 中的服务
    Gradle 如何打包 Spring Boot 如何不添加版本代码
    HDU 5878---预处理+二分查找
    HDU 5881--Tea 思维规律
    HDU 5879---cure
    (转)C/S 与 B/S 区别
    卡特兰数
  • 原文地址:https://www.cnblogs.com/forward/p/1690293.html
Copyright © 2011-2022 走看看