我正在尝试运行我制作的应用程序 - 使用glew。 它编译得很好,但是当我尝试运行它时,我得到错误:libGLEW.so.1.9:无法打开共享对象文件。没有相应的文件和目录。我已经检查过是否有它,而且它在usr / lib64中。 我在互联网上尝试了其他修复,我编辑了/etc/ld.so.conf到这个:
include /etc/ld.so.conf.d/*.conf /usr/lib64/libGLEW.so.1.9(adding this second path)
然后运行ldconfig,但终端吐出了很多乱码。
有人可以帮忙吗? 顺便说一句,抱歉没有信息。
答案 0 :(得分:5)
您应该阅读man ldconfig
:
说明
ldconfig creates the necessary links and cache to the most recent
shared libraries found in the directories specified on the command
line, in the file /etc/ld.so.conf, and in the trusted directories (/lib
and /usr/lib). The cache is used by the run-time linker, ld.so or ld-
linux.so. ldconfig checks the header and filenames of the libraries it
encounters when determining which versions should have their links
updated.
该文件应自动生成。在Gentoo上,它只包含目录。
$ cat /etc/ld.so.conf
# ld.so.conf autogenerated by env-update; make all changes to
# contents of /etc/env.d directory
/lib64
/usr/lib64
/usr/local/lib64
/lib32
/usr/lib32
/usr/local/lib32
/lib
/usr/lib
/usr/local/lib
include ld.so.conf.d/*.conf
/usr/lib32/OpenCL/vendors/nvidia
/usr/lib64/OpenCL/vendors/nvidia
/usr/lib32/opengl/nvidia/lib
/usr/lib64/opengl/nvidia/lib
/usr/lib64/qca2
/usr/lib64/qt4
/usr/lib32/qt4
/usr/lib/qt4
/usr/lib/postgresql
/usr/lib64/postgresql
/usr/lib64/postgresql-9.3/lib64/
/usr/games/lib64
/usr/games/lib32
/usr/games/lib
查看/etc/env.d ...
$ grep LD /etc/env.d/*
/etc/env.d/00basic:LDPATH='/lib64:/usr/lib64:/usr/local/lib64:/lib32:/usr/lib32:/usr/local/lib32:/lib:/usr/lib:/usr/local/lib'
/etc/env.d/00glibc:LDPATH="include ld.so.conf.d/*.conf"
/etc/env.d/03opencl:LDPATH="/usr/lib32/OpenCL/vendors/nvidia:/usr/lib64/OpenCL/vendors/nvidia"
/etc/env.d/03opengl:LDPATH="/usr/lib32/opengl/nvidia/lib:/usr/lib64/opengl/nvidia/lib"
/etc/env.d/44qca2:LDPATH="/usr/lib64/qca2"
/etc/env.d/44qt4:LDPATH="/usr/lib64/qt4:/usr/lib32/qt4:/usr/lib/qt4"
/etc/env.d/44qt4-emul:LDPATH=/usr/lib32/qt4
/etc/env.d/50postgresql:LDPATH="/usr/lib/postgresql:/usr/lib64/postgresql:/usr/lib64/postgresql-9.3/lib64/"
/etc/env.d/90games:LDPATH="/usr/games/lib64:/usr/games/lib32:/usr/games/lib"
根据我的看法判断你应该检查/etc/ld.so.conf.d/中的文件,将其中一个文件复制到一个新文件中,例如glew.conf,并修改新文件中的路径以指向到lib文件所在的文件夹。
答案 1 :(得分:0)
原来这是一个简单的错误。
而不是添加路径以专门包含
/usr/lib64/libGLEW.so.1.9
在ld.so.config
文件中,我尝试了包含路径
/usr/lib64/