web-dev-qa-db-fra.com

Comment faire en sorte que mon compilateur localise les fichiers d'en-tête X11?

J'essaie d'utiliser GLEW et XServer/X11 dans une application C++ comme indiqué dans le chapitre 15 de la publication OpenGL Superbible, 5e éd.

J'utilise ce Makefile:

LIBDIRS = -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L/usr/local/lib
INCDIRS = -I/usr/include -L/usr/include 

CC = g++
CFLAGS = $(COMPILERFLAGS) -g $(INCDIRS)
LIBS = -lX11 -lXi -lXmu -lm -lGLEW -lGLU -lGL

GLXBasics: GLXBasics.o
        $(CC) $(CFLAGS) -o GLXBasics $(LIBDIRS) GLXBasics.cpp $(LIBS)

clean:
        rm -f *.o

et obtenir ce résultat:

GLXBasics.cpp:4:18: fatal error: glew.h: No such file or directory

[EDIT:] Après avoir corrigé une erreur de code stupide, j'ai maintenant des problèmes avec X11 et mes problèmes avec GLEW sont historiques.

/usr/bin/ld: cannot find -lXi
/usr/bin/ld: cannot find -lXmu

[/MODIFIER]

Si je commente l'inclusion de glew.h, l'échec de l'inclusion de glxew.h.

J'ai copié et collé Sudo glew.h et glxew.h dans /usr/include/GL. (Quel est l'endroit où je pense qu'ils sont censés être?)

Pardonnez-moi au cas où j'aurais oublié d'inclure quelque chose dans ma question - tout ce que vous aimeriez savoir ou voir depuis mon terminal suffit de demander.

4
mynameisnafe

GLXBasics.cpp:4:18: fatal error: glew.h: No such file or directory

Je suppose que vous avez une ligne avec quelque chose comme la ligne ci-dessous?

#include <glew.h>

Changer cela en

#include <GL/glew.h>

Cela est nécessaire, car vous l'avez copié dans le sous-répertoire GL/ des chemins de recherche spécifiés dans votre INCDIRS.


J'ai copié et collé Sudo glew.h et glxew.h dans /usr/include/GL

Je recommanderais d'utiliser /usr/local/include/GL car cela éviterait les conflits avec les paquets Ubuntu.

J'ai maintenant des problèmes avec X11 et mes problèmes avec GLEW sont historiques.

/usr/bin/ld: cannot find -lXi
/usr/bin/ld: cannot find -lXmu

parce qu'ils sont dans /usr/local/include?

Cette erreur concerne les bibliothèques (fichiers binaires) et non les en-têtes. Si vous les installez manuellement, vous devez les placer dans /usr/local/lib au lieu de include/ (pour les fichiers d’en-tête). Ou peut-être manquez-vous simplement les packages de développement X ici? Veuillez poser cette question dans une nouvelle question si cela n'a rien à voir avec vos fichiers d'en-tête.

N'oubliez pas de mettre à jour vos INCDIR et LIBDIR pour inclure les nouveaux répertoires /usr/local/include, par exemple:

INCDIRS = -I/usr/include -L/usr/include -I/usr/local/include -L/usr/local/include 
1
gertvdijk