zoukankan      html  css  js  c++  java
  • Linux下error while loading shared libraries的解决方法

    1. 出现error while loading shared libraries的原因

    1-1. 不存在该共享库,如果是这个原因,需要下载或者编译该共享库先了。

    1-2. 存在该共享库,但是找不到或者共享库的不对

    如果是第二种情况,请继续往下看。 

    2.原因分析

    系统查看共享库的过程:首先查找 /etc/ld.so.cache文件,如果找不到就查找环境变量里的LD_LIBRARY_PATH的值,如果找到了就到对应的目录加载该共享库,如果找不到就报error while loading shared libraries错误了;

     而/etc/ld.so.cache文件的内容是根据

    /lib目录、

    /usr/lib目录、

    /etc/ld.so.conf(/etc/ld.so.conf文件包含/etc/ld.so.conf.d下所有conf文件)文件、

     这三个的内容生成的。

     3.解决方法

    方法1:将你的共享库copy到/lib目录或者/usr/lib目录下,然后执行sudo ldconfig 来重新装载/etc/ld.so.cache文件

    方法2:在ld.so.conf.d目录下创建一个conf文件(比如sudo vi test.conf),内容就是你共享库的路径,然后执行sudo ldconfig 来重新装载/etc/ld.so.cache文件

    方法3:创建符号连接到/lib目录或者/usr/lib目录下,然后执行sudo ldconfig 来重新装载/etc/ld.so.cache文件。

      举例说明:ln -s /home/test/xx.so /usr/lib/xx.so //如果是因为版本号不对,可以符号连接改为需要的版本号 

    方法4:就是在环境变量添加LD_LIBRARY_PATH的值了,也就是在当前用户目录下的 附:我就是使用方法2,网上看了很多人在/etc/ld.so.conf文件里面直接添加共享库的路径,这样也一样,但是为什么不是在ld.so.conf.d目录下创建一个conf文件呢?因为/etc/ld.so.conf文件实际上就是包含ld.so.conf.d目录下的所有conf文件。并且感觉这样管理好多了。

  • 相关阅读:
    有注释的LED驱动
    给想成为程序员的大学生的建议
    三星s3c6410用户手册初步阅读
    linux下重新安装grub
    对寄存器的操作
    linux 头文件
    VC的环境设置
    VC++工程文件说明
    C/C++文件操作转载自http://www.cnblogs.com/kzloser/archive/2012/07/16/2593133.html#b1_2
    GetWindowDC-BeginPaint-GetDC 区别详解
  • 原文地址:https://www.cnblogs.com/lidabo/p/13750906.html
Copyright © 2011-2022 走看看