我是c ++的新手,在我的新项目中遇到了一个我不明白的问题 我的计划的相关部分是:
#include <glew.h>
#include <SDL.h>
#include <SDL_opengl.h>
int initGlew()
{
if(glewInit()!=GLEW_OK)
{
printf("Unable to init glew!");
return 1;
}
return 0;
}
但是当我使用代码块运行它时,会出现以下运行时错误:
home/samuel/Dokumente/ProjekteC++/GameGL/bin/Debug/GameGL: error while loading shared libraries: libGLEW.so.1.9: cannot open shared object file: No such file or directory
在构建选项中,我链接到这些so-files:
我搜索了很多错误,但没有发现任何错误。我希望你能帮助我。
答案 0 :(得分:3)
使用环境变量LD_LIBRARY_PATH旨在用于临时的仅测试解决方案。相反,如果在linux上将相同的路径放入系统范围的配置文件中:
/etc/ld.so.conf
喜欢:
cat /etc/ld.so.conf
/usr/lib64
然后参与此更改问题:
sudo ldconfig
答案 1 :(得分:2)
错误是说它在运行时找不到动态库。编译应用程序时,您链接到静态库(.a文件),但在运行时,您可以动态加载.so文件,这就是这里发生的事情。
如果列出应用程序库依赖项,您可能会发现它找不到libGLEW。您可以使用ldd命令在命令行上执行此操作。
$ ldd <your_file>
linux-vdso.so.1 => (0x00007fff769ff000)
libGLEW.so.1.9 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2af9e28000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2afa208000)
使用LD_LIBRARY_PATH导出将目录添加到库搜索路径。您可以再次在命令行上执行此操作。
$LD_LIBRARY_PATH=/usr/lib64 ldd <your_file>
linux-vdso.so.1 => (0x00007fff2e053000)
libGLEW.so.1.9 => /usr/lib64/libGLEW.so.1.9 (0x00007f4071ca5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f40718c7000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f4071660000)
...
然后您可以通过省略ldd命令来运行您的应用程序。我不确定如何在codeblocks中使用它,但我假设您可以在Run / Debug设置中的某处设置调试环境配置。
由于