我使用make install
编译安装了GLEW库,并在编写一个小的测试程序(源代码可以在这里找到)时使用它。我运行了locate libGLEW.so
来检查GLEW库是否已经正确安装,得到以下输出:
/usr/lib64/libGLEW.so
/usr/lib64/libGLEW.so.2.0
/usr/lib64/libGLEW.so.2.0.0
这是完全正常的。然后,我使用命令进行编译:
g++ main.cpp -o main -lglfw -lGLEW -lGL -lX11 -lpthread -lXi -g
这也没有产生任何错误。但是,当我尝试执行程序时:
./main: error while loading shared libraries: libGLEW.so.2.0: cannot open shared object file: No such file or directory
为了进行健全性检查,我运行了ldd main | grep "GLEW"
,果然如此:
libGLEW.so.2.0 => not found
我最初认为这可能是链接器没有搜索包含库的目录的问题,因此我运行了命令ld --verbose | grep "/usr/lib64"
,然后发现有一个SEARCH_DIR包含所需的目录:
... SEARCH_DIR("=/usr/lib64"); ...
这让我感到特别困惑。我尝试使用-L/usr/lib64
选项进行编译,但是仍然出现了相同的错误消息。我检查了库的符号链接是否正确,结果发现它们都是正确的:
lrwxrwxrwx 1 root root 16 Jul 15 10:22 libGLEW.so -> libGLEW.so.2.0.0
lrwxrwxrwx 1 root root 16 Jul 15 10:38 libGLEW.so.2.0 -> libGLEW.so.2.0.0
-rw-r--r-- 1 root root 707K Jul 15 10:22 libGLEW.so.2.0.0
我不确定是什么原因导致了这个问题,但我开始相信我没有正确安装库。我感觉答案就在我的眼前,但我找不到它。
提前感谢任何帮助。