绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
tokyo tyrant
2022-04-13 17:16:40

这两天在搭一个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的时候

 

1
2
3
4
5
6
7
8
9
10
11
12
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. \
              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. \
              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.] 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-proto* -Wmissing-proto*

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

记得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

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Tokyo Tyrant
创建时间:2022-04-13 16:33:57
Tokyo Tyrant
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • LCR_
    专家
戳我,来吐槽~