美文网首页我用 LinuxLinux学习之路Linux
完美解决 error while loading shared

完美解决 error while loading shared

作者: CavalryLin | 来源:发表于2018-11-08 15:27 被阅读0次
    • 环境: ubuntu 18.04

      • 具体案例:
      $ ./glcapsviewer
      
      ./glcapsviewer: error while loading shared libraries: libGLEW.so.1.13: cannot open shared object file: No such file or directory
      
      • 原因:
        缺少libGLEW.so.1.13

      • 尝试方案一:

      $sudo apt-cache search libGLEW
      
      glew-utils - OpenGL Extension Wrangler - utilities
      libglew-dev - OpenGL Extension Wrangler - development environment
      libglew2.0 - OpenGL Extension Wrangler - runtime environment
      libglewmx-dev - OpenGL Extension Wrangler MX - development environment
      libglewmx1.13 - OpenGL Extension Wrangler (Multiple Rendering Contexts)
      

      将search到的几个库通过apt install 全部安装,问题仍未解决

      • 尝试方案二:
        查找/目录下,name为libGLEW.so.1.13*(libGLEW.so.1.13后的*号是匹配规则,防止文件实际命名为libGLEW.so.1.13.0的情况),类型为f的文件。如果查找到文件,那么我们可以通过配置环境变量的方式,使运行./glcapsviewer时找到libGLEW.so.1.13。因为如果库安装到/usr/lib目录下,系统在运行时会自动查找此目录下的文件,如果没有安装到/usr/lib目录下,需自己手动配置环境变量

      sudo find / -name libGLEW.so.1.13* -type f

      查找后并未发现libGLEW.so.1.13*,说明通过方案一,并未安装我们想要的文件

      • 尝试方案三:
      $ dpkg -S libGLEW.so
      
      libglew2.0:amd64: /usr/lib/x86_64-linux-gnu/libGLEW.so.2.0
      libglew2.0:amd64: /usr/lib/x86_64-linux-gnu/libGLEW.so.2.0.0
      

      查找到libGLEW.so.2.0, 说明在方案一中我们安装的是libGLEW.so.2.0而不是libGLEW.so.1.13,那我么只需找到1.13版自行安装即可

      • 最终解决方案
        这里下载glew1.13版本的源文件,自行编译安装,结果执行make时报错,提示缺少什么东西,忘记了,没记载。

      然后还是在这个连接所在的页面最后,README.txt中写道,可以使用pre-generated (unsupported) snapshot版本来安装,点击连接跳转到下载页面,找到我们所需要的1.13版本,下载后顺利编译安装。

      验证是否已安装libGLEW.so.1.13*

      $ sudo find / -name libGLEW.so.1.13* -type f
      /usr/lib64/libGLEW.so.1.13.0
      

      结果查找到libGLEW.so.1.13.0, 说明我们已正确安装。此时运行./glcapsviewer仍然报相同的错误,怀疑是环境变量未配置,在~/.profile中最后一行增加export PATH="/usr/lib64:$PATH"来配置环境变量。

      再次运行./glcapsviewer还是报相同的错误,网上搜索得到答案:
      将so库所在的目录/usr/lib64写入到/etc/ld.so.conf中,然后执行sudo ldconfig,至此glcapsviewer可以完美运行!

      /etc/ld.so.conf的作用:
      /etc/ld.so.conf.d/*目录下的文件和/etc/ld.so.conf记录了动态链接库的路径,系统默认搜索/lib/usr/lib,在其他路径下的库文件就需在这些文件中指定。或者,还有个方法,就是设置LD_LIBRARY_PATH环境变量,添加其他路径,多个 中间用:分隔开

    相关文章

      网友评论

        本文标题:完美解决 error while loading shared

        本文链接:https://www.haomeiwen.com/subject/uoewxqtx.html