环境: 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
环境变量(可以设置到~/.bashrc
或~/.bash_profile
,设置到/etc/profile
下无效,至少在ubuntu18.04下是这样),添加其他路径,多个 中间用:分隔开