zoukankan      html  css  js  c++  java
  • 解决 Linux error while loading shared libraries: cannot open shared object file: No such file or directory

    安装最新版本Emqtt,参照官方文档安装后,执行报错:

    Linux error while loading shared libraries libsctp.so.1: cannot open shared object file: No such file or directory 

    从互联网上找到了一些文章, 解决了我的问题,这里整理贴一下,类似的问题应该都可以参照解决。

    1.先在本地查找一下文件

    命令:wheris libsctp.so.1

    先查找一下本地是否存在文件,如果存在的话,直接跳到第三步,我这里的结果是找不到。

    2.然后google 一下 下载libsctp

    这个网站上有很多so文件下载: https://www.rpmfind.net/

    https://www.rpmfind.net/linux/RPM/centos/6.8/x86_64/Packages/lksctp-tools-1.0.10-7.el6.i686.html

    RPM安装,参照

    http://www.centoscn.com/CentOS/help/2013/1019/1906.html

    安装后wheris  libsctp.so.1

    发现安装在usr/lib下面了。

    再次运行 ./bin/emqttd consle,还是报错。

    3.怀疑是环境变量 LD_LIBRARY_PATH的问题。

    系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。

    一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发现自己所需要的.so文件。

    所以,在/etc/ld.so.conf中加入/usr/local/lib这一行,保存之后,再运行:/sbin/ldconfig –v更新一下配置即可。

    在我这里,rpm后,so文件安装在了/usr/lib下,这个目录下应该是不需要配置的。

    需要配置的同学可以参见:

    http://blog.csdn.net/sahusoft/article/details/7388617

    在我这里,/sbin/ldconfig 更新后还是报错。不过错误信息变了:

     wrong ELF class: ELFCLASS32

    4.查询后,发现应该是 32位,64位问题。我安装的Emqttd是64位版本。

    使用命令

    file /usr/lib64/libsctp.so.1 发现是个链接到 `libsctp.so.1.0.17'

    file /usr/lib64/libsctp.so.1.0.17,发现是个32位的文件。

    看起来是64位的Emqtt用不了32位的so文件。

    5. 重新google libsctp的64位版本,rpm安装。安装之前先rpm -e 卸载原来的32位版本。

    安装64位后,ldconfig 。再次运行,成功打开emqtt服务,问题解决。

     

  • 相关阅读:
    [转贴]Asp.Net[C#]在线压缩解压
    [转载]如何用C#语言构造蜘蛛程序
    [转载].net 集合类初步认识
    试用随笔
    安装中文VS2008 SP1 和.NETFRAMEWORK 3.5SP1后智能提示是英文的解决办法
    关于IE提示“Internet Explorer无法打开站点,已终止操作”的解决办法
    linux每天建立一个以当天日期命名的文件夹
    linux常用装机命令
    linux安装oracle客户端
    批量分发文件
  • 原文地址:https://www.cnblogs.com/calmzeal/p/6588471.html
Copyright © 2011-2022 走看看