J'ai construit GLEW (en utilisant make install
) pour l'utiliser dans un petit programme de test que j'écris (la source peut être trouvée here si vous en avez besoin). Je courus locate libGLEW.so
juste pour vérifier si les bibliothèques Glew ont été correctement installés, et a obtenu le résultat suivant:Le programme C++ ne lie pas correctement au fichier .so
/usr/lib64/libGLEW.so
/usr/lib64/libGLEW.so.2.0
/usr/lib64/libGLEW.so.2.0.0
C'était tout à fait normal. Je l'ai ensuite compilé en utilisant la commande:
g++ main.cpp -o main -lglfw -lGLEW -lGL -lX11 -lpthread -lXi -g
Cela n'a pas non plus entraîné d'erreurs. Cependant, quand j'ai essayé d'exécuter le programme:
./main: error while loading shared libraries: libGLEW.so.2.0: cannot open shared object file: No such file or directory
Juste pour un contrôle de santé mentale, je courais ldd main | grep "GLEW"
, et bien sûr:
libGLEW.so.2.0 => not found
Je pensais d'abord que cela pourrait être un problème avec l'éditeur de liens ne recherche pas le répertoire contenant les bibliothèques. Alors j'ai couru la commande ld --verbose | grep "/usr/lib64"
et il était un SEARCH_DIR contenant le répertoire requis:
... SEARCH_DIR("=/usr/lib64"); ...
Cela était particulièrement déroutant. J'ai essayé de compiler avec l'option -L/usr/lib64
, mais le même message d'erreur persistait toujours. J'ai vérifié que les liens symboliques à la bibliothèque étaient corrects et ils étaient:
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
Je ne sais pas ce qui cause exactement le problème, mais je commence à croire que je ne l'ai pas installé correctement les bibliothèques. J'ai l'impression que la réponse est juste devant mes yeux mais je ne peux pas la trouver.
Merci d'avance pour toute aide.
Que signifie 'uname -a'? –
@JohnHinrichsen Linux TRASHTOPB 4.8.0-58-générique # 63 ~ 16.04.1-Ubuntu SMP lun. 26 juin 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux – WickedJet