首页 > 代码库 > 解决 Magent 安装编译时出现错误和magent: error while loading shared libraries: libevent-2.0.so.5

解决 Magent 安装编译时出现错误和magent: error while loading shared libraries: libevent-2.0.so.5

一.背景

   在 Linux上安装Magent代理服务器软件时,在后面的文章会介绍介绍了Magent解决Memcached服务的负载均衡和容错上。我这边先介绍安装Magent过程中出现的问题。

二.问题

   安装Magent过程中出现问题

  #tar zxvf magent-0.5.tar.gz

  #/sbin/ldconfig  

  #sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile 

  #make 

问题一:我在编译make Magent出现问题,如图所示:


分析:出现Libevent eventwritev_list找不到SSIZE_MAX,我们第一个想到是不是我们Libevent 没安装,我们查看一下我们Libevent 有没有安装,如图所示:


有正确安装,那我们想到是不是没正确引用到Libevent ?

 问题二:使用Magent命令时出现问题,报找不到libevent  libmagent: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory  如图所示:


 有正常安装好,是不是没引用到Libevent  lib


三.解决问题一

 根据分析,我们Libevent有正确安装,并且安装在/opt下,我们刚才分析到没引用到eventwritev_list找不到SSIZE_MAXLibevent我们安装在/opt目录下,我们想到Libeventevent在安装目录下的include目录下,如图所示:

   

  

 Makefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系,make时会读取Makefile文件,所以我们得先修改Makefile文件

第一步:修改Makefile 

   我们修改Makefile,把指向安装路径下的include目录,加入 INCLUDE=-I/opt/include,如图所示:

   

  这时我们把引用Libevent的正确的路径包含进来,然后我们在执行#make编译命令,结果还可是出现问题,问题是writev_list找不到SSIZE_MAX,如图所示:


分析:是不是我们没设置这个SSIZE_MAX变量。


第二步:修改ketama.h

  在这个文件定义SSIZE_MAX和设置值,如图所示:

  


 第三步:执行make

   我们执行#make,这时能正常编译,如图所示:

   


  这时能正确的编译


四.解决问题二

   我们编译过了,然后执行#magent命令时,出现/usr/bin/magent没这个文件或者目录,如图所示:

   


   我们把magent复制到/usr/bin/magent,执行#cp magent /usr/bin/magent

  这时我们执行#magent出现了magent: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory这时是没找到对应的lib

 

   我们把libevent-2.0.so.5放到/usr/lib文件下,就可以

   #ln -s /opt/lib/libevent-2.0.so.5 /usr/lib

 最后执行#magent这时会出现帮助,这样就能成功执行,如图所示:

   

 

解决 Magent 安装编译时出现错误和magent: error while loading shared libraries: libevent-2.0.so.5