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

最近在研究张宴的 基于 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终于起来了。

 

 

 

 


你可能感兴趣的:(c,object,gcc,File,TokyoCabinet,编译器)