Fedora安装HTTPSQS所遇各种问题解决汇总

whx00 2011-04-27

最近在研究张宴的 基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务HTTPSQS,安装阶段遇到如下错误:

安装tokyocabinet时./configure会出现如下错误:

configure: error: bzlib.h is required .

这是因为bzlib.h找不到的错误,在Fedora下是bzip2-devel没有安装,用yum 安装就好了

yum install bzip-devel 解决了。

------------------------------------------------------------

到了httpsqs的make阶段,出现不少链接错误,简单说明一下基础:

gcc 的-I 参数指示编译器不仅在标准位置,还在指定的位置中查找相关的头文件;

gcc 的-L参数指示为编译器增加库的搜索路径,可以修改配置文件/etc/ld.so.conf给编译器增加动态库的搜索路径。

出现以下错误:

gcc -o httpsqs httpsqs.c prename.c -L/usr/local/libevent-2.0.10-stable/lib/ -levent -L/usr/local/tokyocabinet-1.4.47/lib/ -ltokyocabinet -I/usr/local/libevent-2.0.10-stable/include/ -I/usr/local/tokyocabinet-1.4.47/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g --static 
/usr/bin/ld: cannot find -lz  
/usr/bin/ld: cannot find -lbz2  
/usr/bin/ld: cannot find -lrt  
/usr/bin/ld: cannot find -lpthread  
/usr/bin/ld: cannot find -lm  
/usr/bin/ld: cannot find -lc  
/usr/bin/ld: cannot find -lc  
collect2: ld 返回 1  
make: *** [httpsqs] 错误 1 

但是libc.so等就在/usr/lib目录下,我也已经将该目录增加到/etc/ld.so.conf文件中,这会是什么问题呢?

什么都不如手册可靠,呵呵。看了一下gcc的手册,发现,--static选项作用是禁止使用共享库,而这几个需要的静态库我有没有安装,现在一般很少安装静态库了,解决的方法之一就是安装相应的静态库。

我没有这样做,既然已经存在共享库,为何还要安装静态库呢?于是我将--static选项删除,make,make install成功了。

接着我启动httpsqs,发现还是抱错。

./httpsqs: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

于是使用ldd命令查看一下httpsqs需要的共享库,结果如下:

ldd /usr/bin/httpsqs

结果:

linux-gate.so.1 =>  (0x005ac000)
    libevent-2.0.so.5 => not found
    libtokyocabinet.so.9 => /usr/lib/libtokyocabinet.so.9 (0x00905000)
    libz.so.1 => /lib/libz.so.1 (0x008cf000)
    libbz2.so.1 => /lib/libbz2.so.1 (0x03018000)
    librt.so.1 => /lib/librt.so.1 (0x00898000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00874000)
    libm.so.6 => /lib/libm.so.6 (0x008a3000)
    libc.so.6 => /lib/libc.so.6 (0x006e8000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x008e6000)
    /lib/ld-linux.so.2 (0x006c7000)

于是使用whereis 查找一下 libevent-2.0.so.5,发现在

/usr/local/libevent-2.0.10-stable/lib/libevent-2.0.so.5

存在。

解决方案:做一个软连接:

ln -s /usr/local/libevent-2.0.10-stable/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5

这个时候在使用ldd查看,一切正常了。

这个时候,终于,历经好几个小时的摸索,httpsqs终于起来了。

相关推荐