memcached – error while loading shared libraries: libevent-2.0.so.5
memcached – error while loading shared libraries: libevent-2.0.so.5
laichendong 发表于3年前
memcached – error while loading shared libraries: libevent-2.0.so.5
  • 发表于 3年前
  • 阅读 281
  • 收藏 17
  • 点赞 1
  • 评论 4
今天在64位centos上安装memcached。启动服务时出现 error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory。记录一下处理的方法。 看到这个错的时候感觉很奇怪,因为我之前已经下载安装过libevent了。为什么启动的时候会找不到呢?看看我的处理步骤:

一、再次确定libevent安装在了哪里

# whereis libevent-2.0.so.5  
libevent-2.0.so: /usr/lib/libevent-2.0.so.5 /usr/local/lib/libevent-2.0.so.5

 二、看看memcached的依赖

# ldd memcached 
        linux-vdso.so.1 =>  (0x00007fff79ba0000)
        libevent-2.0.so.5 => not found
        librt.so.1 => /lib64/librt.so.1 (0x00000035c3e00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000035c3a00000)
        libc.so.6 => /lib64/libc.so.6 (0x00000035c3600000)
        /lib64/ld-linux-x86-64.so.2 (0x00000035c2e00000)
发现果然没有找到libevent-2.0.so.5。

三、看看memcached找依赖包的过程

# LD_DEBUG=libs ./memcached -v
     25352:     find library=libevent-2.0.so.5 [0]; searching
     25352:      search cache=/etc/ld.so.cache
     25352:      search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64                (system search path)
     25352:       trying file=/lib64/tls/x86_64/libevent-2.0.so.5
     25352:       trying file=/lib64/tls/libevent-2.0.so.5
     25352:       trying file=/lib64/x86_64/libevent-2.0.so.5
     25352:       trying file=/lib64/libevent-2.0.so.5
     25352:       trying file=/usr/lib64/tls/x86_64/libevent-2.0.so.5
     25352:       trying file=/usr/lib64/tls/libevent-2.0.so.5
     25352:       trying file=/usr/lib64/x86_64/libevent-2.0.so.5
     25352:       trying file=/usr/lib64/libevent-2.0.so.5
     25352:
./memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
发现memcached去搜索的路径中果然没有我们libevent-2.0.so.5包所在的位置

四、建立软链,让memcached可以找到他要的libevent-2.0.so.5

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

 五、再次查看memcached的依赖

# ldd memcached               
        linux-vdso.so.1 =>  (0x00007fff309ff000)
        libevent-2.0.so.5 => /lib64/libevent-2.0.so.5 (0x00007fa18c72e000)
        librt.so.1 => /lib64/librt.so.1 (0x00000035c3e00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000035c3a00000)
        libc.so.6 => /lib64/libc.so.6 (0x00000035c3600000)
        /lib64/ld-linux-x86-64.so.2 (0x00000035c2e00000)
大功告成!这下已经找到了! 这是一个很典型的问题,处理思路更加典型。记录之,也方便后来人。
共有 人打赏支持
粉丝 9
博文 85
码字总数 71483
评论 (4)
cntoby
在/etc/ld.so.conf.d里加一个文件,把lib的搜索目标加进去,然后ldconfig,再执行程序就找到了,这样应该比做软链接更干净吧
laichendong

引用来自“cntoby”的评论

在/etc/ld.so.conf.d里加一个文件,把lib的搜索目标加进去,然后ldconfig,再执行程序就找到了,这样应该比做软链接更干净吧
回去尝试一下。谢谢。
newnoder
0-1

引用来自“cntoby”的评论

在/etc/ld.so.conf.d里加一个文件,把lib的搜索目标加进去,然后ldconfig,再执行程序就找到了,这样应该比做软链接更干净吧

+1
×
laichendong
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: