[c++]Comment compiler un prog opengl+gnut sous linux ?

Comment compiler un prog opengl+gnut sous linux ? [c++] - Programmation

Marsh Posté le 15-06-2001 à 09:27:46    

Quel ligne de commande je dois taper pour que le compilateur aille chercher les librairies au bon endroit ?
C'est loin d'etre évident !!
 
toute aide sera la bienvenue .

Reply

Marsh Posté le 15-06-2001 à 09:27:46   

Reply

Marsh Posté le 15-06-2001 à 09:35:29    

ben il sait où elles sont les libs, kess tu raconte ?

Reply

Marsh Posté le 15-06-2001 à 09:38:19    

minusplus a écrit a écrit :

ben il sait où elles sont les libs, kess tu raconte ?




 
elles sont sur le serveur mais il faut tapper une ligne de commande tres compliqué avec GCC .

Reply

Marsh Posté le 15-06-2001 à 09:42:08    

bon, j'ai pas tout compris mais :
pour spécifier le chemin des libs : -L path
pour spécifier une lib : -l lib

Reply

Marsh Posté le 15-06-2001 à 09:46:04    

minusplus a écrit a écrit :

bon, j'ai pas tout compris mais :
pour spécifier le chemin des libs : -L path
pour spécifier une lib : -l lib




 
c'est au moment de la compilation du .O qu'il ne trouve pas les méthodes opengl ,j'aimerai bien savoir d'ou ça peut venir .

Reply

Marsh Posté le 15-06-2001 à 09:53:05    

t'as pas linké avec les bonnes libs ou elles sont pas à leur place. tu peux pas copier coller la sortie du linker ? qu'on voie les erreurs ?

Reply

Marsh Posté le 15-06-2001 à 10:13:05    

minusplus a écrit a écrit :

t'as pas linké avec les bonnes libs ou elles sont pas à leur place. tu peux pas copier coller la sortie du linker ? qu'on voie les erreurs ?




 
pour le moment je suis chez moi, mais je donnerai plus de details sur la ligne de commande et les libs presentes sur le serveur cette apres midi.
ça vient peut etre de l'admin qui a mal installé opengl et glut.
sinon les erreures du linker c'est des methodes OPENGL qui trouve pas .

 

[edit]--Message édité par Drakkeng--[/edit]

Reply

Marsh Posté le 15-06-2001 à 10:14:41    

Exactement, tu dois te taper la grosse ligne enorme avec les liens vers toutes les librairies... :p
 
Ca ressemble a un truc comme ca :
 
g++ -o programme main.cpp -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lm -lxmps
 
 
Conseil : mets tout ca dans un Makefile, comme ca apres tu t'en occupes plus...

Code :
  1. CC= g++
  2. OUTPUT= programme
  3. OBJECTS= main.o # et plus si plusieurs fichiers .cpp
  4. GLUTLFLAGS= -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lm -lxmps
  5. all:
  6.         $(CC) -o $(OUTPUT) $(OBJECTS) $(GLUTLFLAGS)
  7. main.o: main.cpp
  8.         $(CC) $(CFLAGS) -c main.cpp
  9. # reecrire cette derniere commande pour tous les fichiers .cpp
  10. clean:
  11.         rm -f *.o $(OUTPUT) *~


 
 
comme ca pour compiler ensuite, tu fais juste 'make', et ca marche :)
Et fait attention a bien mettre une tabulation et pas 8 espaces avant chaque ligne commencant par $(CC)... et la derniere rm -f

 

[edit]--Message édité par tgrx--[/edit]

Reply

Marsh Posté le 15-06-2001 à 10:16:46    

tgrx a écrit a écrit :

Exactement, tu dois te taper la grosse ligne enorme avec les liens vers toutes les librairies... :p
 
Ca ressemble a un truc comme ca :
 
g++ -o programme main.cpp -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lm -lxmps
 
 
Conseil : mets tout ca dans un Makefile, comme ca apres tu t'en occupes plus...

Code :
  1. CC= g++
  2. OUTPUT= programme
  3. OBJECTS= main.o # et plus si plusieurs fichiers .cpp
  4. GLUTLFLAGS= -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lm -lxmps
  5. all:
  6.         $(CC) -o $(OUTPUT) $(OBJECTS) $(GLUTLFLAGS)
  7. main.o: main.cpp
  8.         $(CC) $(CFLAGS) -c main.cpp
  9. # reecrire cette derniere commande pour tous les fichiers .cpp
  10. clean:
  11.         rm -f *.o $(OUTPUT) *~


 
 
comme ca pour compiler ensuite, tu fais juste 'make', et ca marche :)
Et fait attention a bien mettre une tabulation et pas 8 espaces avant chaque ligne commencant par $(CC)... et la derniere rm -f
 
 




 
trop fort merci beaucoup tu me sauves la vie si ça marche ,je test cette apres midi .

Reply

Marsh Posté le 15-06-2001 à 10:58:08    

tgrx a écrit a écrit :

Exactement, tu dois te taper la grosse ligne enorme avec les liens vers toutes les librairies... :p  
 
Ca ressemble a un truc comme ca :  
 
g++ -o programme main.cpp -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lm -lxmps  
 
 
Conseil : mets tout ca dans un Makefile, comme ca apres tu t'en occupes plus...  

Code :
  1. CC= g++
  2. OUTPUT= programme
  3. OBJECTS= main.o # et plus si plusieurs fichiers .cpp
  4. GLUTLFLAGS= -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lm -lxmps
  5. all:
  6.         $(CC) -o $(OUTPUT) $(OBJECTS) $(GLUTLFLAGS)
  7. main.o: main.cpp
  8.         $(CC) $(CFLAGS) -c main.cpp
  9. # reecrire cette derniere commande pour tous les fichiers .cpp
  10. clean:
  11.         rm -f *.o $(OUTPUT) *~

 
 
 
comme ca pour compiler ensuite, tu fais juste 'make', et ca marche :)  
Et fait attention a bien mettre une tabulation et pas 8 espaces avant chaque ligne commencant par $(CC)... et la derniere rm -f
 
 




y'a besoin du -L /usr/X11R6/lib ? y'a pas des symlinks dans /usr/lib/ ?

Reply

Marsh Posté le 15-06-2001 à 10:58:08   

Reply

Marsh Posté le 15-06-2001 à 11:01:27    

En tout cas chez moi ca ne fonctionne pas dans le -L/usr/X11R6/lib

Reply

Marsh Posté le 15-06-2001 à 11:12:33    

a mon avis, ça dépend des ditro. j'en connais certaines qui seraient capable de mettre des libs dans /usr/local/lib/
X11R6/lib/ ! :D

Reply

Marsh Posté le 15-06-2001 à 18:30:37    

super merci a tout les deux ,ça marche enfin !!!!!!!!!

Reply

Marsh Posté le 19-06-2001 à 16:49:30    

maintenant je n'arrive pas a compiler mon prog car il utilise MUI  
et je ne  trouve pas la librairie . :??:
Comment faire?
ou la trouver et comment l'installer ?
 
merci

Reply

Marsh Posté le 19-06-2001 à 16:52:19    

c koi MUI ?

Reply

Marsh Posté le 19-06-2001 à 18:03:18    

quand je fais une recherche de mui sur mon systeme, je trouve que c'est une calculatrice RPN dans le repertoire /usr/share/glutdemos/
 
C'est ca que tu cherches :??:

Reply

Marsh Posté le 19-06-2001 à 18:21:57    

tgrx a écrit a écrit :

quand je fais une recherche de mui sur mon systeme, je trouve que c'est une calculatrice RPN dans le repertoire /usr/share/glutdemos/
 
C'est ca que tu cherches :??:




 
non c'est pas la calculatrice que je cherche!!
mais elle a etait faites avec MUI .
 
MUI c'est une extension de GLUT qui sert a fabriquer des interfaces (boutons etc ..) ,sous windows ça marche niquel ,mais sous linux impossible de trouver comment l'installer .
Sinon comment je pourrais faire pour fabirquer mon interface sans (dans le pire des cas) ?

Reply

Marsh Posté le 19-06-2001 à 18:29:07    

Es-tu sur que MUI est installee sur ton systeme ? :eek:
Sur le mien (pourtant j'ai installe 95% des packages des 7 CD de la Suse 7.1 :D), impossible de mettre la main dessus...
 
Si elle est installee, fais une recherche sur ton disque, et specifie les bons parametres dans la ligne de commande.
 
Au niveau interface, j'ai recemment eu a utiliser du Glut, mais vu que c'est trop limite tel quel, j'ai utilise Glow, qui est en fait Glut, mais ecrit en C++, ou il y a des classes Fenetres, des classes Buttons, que tu peux instancier, ca marche tres bien, et on peut faire des interfaces assez sympa (regarde les screenshots sur le site).
Seul probleme : Visual C++ refuse d'utiliser Glow, parce les headers sont plein de templates qu'il n'aime pas. Par contre avec gcc ca roule sans probleme :)
 
Pour l'URL de Glow, cf le post [BIBLIOLINK C++] (que je n'ai pas ecrit pour rien), et cherche Glow... :)

Reply

Marsh Posté le 19-06-2001 à 18:34:17    

D'ailleurs la calculatrice dont je te parlais, elle est la :
http://www.sgi.com/software/opengl/examples/glut/mui/ :)
 
Et je rectifie legerement ce que j'ai dit a propos de Glow : c'est une sur-couche de Glut, un wrapper en C++. Ce qui veut dire que meme si ca fonctionne avec des classes, derriere tout ca c'est glut qui fonctionne. Et en particulier toutes les fonctions de glut sont accessibles.
 
En particulier glutGet() pour les fonctions de timing...
Et les tutorials fournis avec le package sont tres bien faits ! :)

Reply

Marsh Posté le 19-06-2001 à 19:04:29    

tgrx a écrit a écrit :

D'ailleurs la calculatrice dont je te parlais, elle est la :
http://www.sgi.com/software/opengl/examples/glut/mui/ :)
 
Et je rectifie legerement ce que j'ai dit a propos de Glow : c'est une sur-couche de Glut, un wrapper en C++. Ce qui veut dire que meme si ca fonctionne avec des classes, derriere tout ca c'est glut qui fonctionne. Et en particulier toutes les fonctions de glut sont accessibles.
 
En particulier glutGet() pour les fonctions de timing...
Et les tutorials fournis avec le package sont tres bien faits ! :)




 
super merci beaucoup ,je vais apprendre a m'en servir car je renonce a installer MUI sous linux ,mais c'est dommage j'avais fait une belle interface sous win2000 .
ça me semble la solution idéale GLOW !!
 
ça m'embette beaucoup que ça marche pas avec le Visual ,tu crois que ça passerai avec le borland C++ ?

 

[edit]--Message édité par Drakkeng--[/edit]

Reply

Marsh Posté le 20-06-2001 à 11:00:18    

j'arrive pas a installer GLOW sous la mandrake 8 !!
le makefile ne marche pas  
 
help
.
PS: bientot un screen du jeux !!

Reply

Marsh Posté le 20-06-2001 à 11:08:28    

Ah ? Tu as quelle version de Glow (moi 1.0.4)
 
Sur mon systeme (Suse 7.1), je fais :
cd glow_104/glow_src
make
 
... et ca marche :??:
 
PS : j'ai GCC 2.95.2

Reply

Marsh Posté le 20-06-2001 à 11:14:51    

D'ailleurs tu as quoi comme message d'erreur avec le Makefile ??

Reply

Marsh Posté le 20-06-2001 à 11:34:07    

tgrx a écrit a écrit :

D'ailleurs tu as quoi comme message d'erreur avec le Makefile ??




 
j'ai la meme version que toi ,je fais d'autre essai

Reply

Marsh Posté le 20-06-2001 à 11:40:07    

ça marche maintenant !!!
mais je fais comment pour compiler ?

 

[edit]--Message édité par Drakkeng--[/edit]

Reply

Marsh Posté le 20-06-2001 à 11:41:34    

Attention votre Makefile gere mal les dependances, et si vous ne faites pas de make clean vous pouver avoir des Pb si seuls les headers ont changes...

Reply

Marsh Posté le 20-06-2001 à 11:51:09    

BENB a écrit a écrit :

Attention votre Makefile gere mal les dependances, et si vous ne faites pas de make clean vous pouver avoir des Pb si seuls les headers ont changes...




 
justement a propos des header il faut les copier quelque part apres avoir lancé  make  ?

Reply

Marsh Posté le 20-06-2001 à 11:54:00    

non. ceci est un extrait du Makefile. les headers/sources doivent etre dans le meme repertoire, ce qui est le cas
SRCDIR=.
GLOWDIR=.  
 
BENB > en jetant un oeil au Makefile, on voit que celui-ci fait automatiquement un make clean pour le make all...

Reply

Marsh Posté le 20-06-2001 à 12:24:09    

tgrx a écrit a écrit :

non. ceci est un extrait du Makefile. les headers/sources doivent etre dans le meme repertoire, ce qui est le cas
SRCDIR=.
GLOWDIR=.  
 
BENB > en jetant un oeil au Makefile, on voit que celui-ci fait automatiquement un make clean pour le make all...




 
et il existe un moyen de compiler sans le makefile ?

Reply

Marsh Posté le 20-06-2001 à 12:30:03    

Je peux toujours te filer les librairies compilees si tu veux...
 
Tu veux pas plutot poster les erreurs que tu recois du Makefile ?? :sarcastic:

Reply

Marsh Posté le 20-06-2001 à 12:36:56    

tgrx a écrit a écrit :

Je peux toujours te filer les librairies compilees si tu veux...
 
Tu veux pas plutot poster les erreurs que tu recois du Makefile ?? :sarcastic:




 
non mais ça marche le makefile ,sauf sur mon PC ou le make tourne en boucle ,j'ai du l'interrompre au bout de 1 heure !!
S'etait juste pour savoir si je pouvez m'en passer.
 
merci de ton aide !!

 

[edit]--Message édité par Drakkeng--[/edit]

Reply

Marsh Posté le 20-06-2001 à 12:43:14    

Ca veut dire quoi : "le make tourne en boucle"
 
Que le programme deraille, ou juste que c'est lent ??

Reply

Marsh Posté le 20-06-2001 à 12:49:17    

tgrx a écrit a écrit :

Ca veut dire quoi : "le make tourne en boucle"
 
Que le programme deraille, ou juste que c'est lent ??




 
ben ça veut dire que quand j'exécute le fichier make dans ma console je vois des messages s'afficher et au bout d'un moment je vois les meme qui reviennent indéfiniment ,je peux laisser mon pc tourner 2 jours ça se fini pas.

Reply

Marsh Posté le 20-06-2001 à 12:57:57    

et tu veux pas les poster ces messages ?

Reply

Marsh Posté le 20-06-2001 à 13:24:44    

Salut je travaille avec Drakkeng je voulais te remercier de ton aide precieuse.
 
j'ai reussi a installer glow mais maintenant ce qu'il nous fait peur c la compilation de prog fait avec glow ,comme on manque un peu d'experience dans le monde de linux ce serait sympa que tu nous dises comment faire un makefile correct ou comment compiler sans makefile
 
Promis on posteras un screen des qu'on aura qq chose de plus avancé :benetton:

Reply

Marsh Posté le 20-06-2001 à 14:16:10    

Mon projet actuel fonctionne sous Glow. Voici a quoi ressemble mon Makefile :
 

Code :
  1. # Makefile
  2. # This file allows an administrator of another unix system to "install" 
  3. # prog on his/her system.
  4. # MACRO DEFINITIONS
  5. # Note ... the comments in this section have been added to make it
  6. # clear to you what each macro is for ... they are NOT something that
  7. # should be included in YOUR makefiles.  Your comments should be aimed
  8. # at helping a user use YOUR makefile to compile YOUR product.
  9. # The CC macro is used to indicate which compiler to use.
  10. # Some folks may use g++, or some other compiler ... this allows you
  11. # to write the rules and then have the installer specify the appropriate
  12. # compile tool.
  13. CC = g++
  14. OUTPUT = prog
  15. # The OBJECTS macro indicates all the .o files necessary to "build
  16. # your executable ... to simplify later lines
  17. OBJECTS= main.o display.o
  18. # The LFLAGS macro is used to tell the compiler to use other libraries.
  19. # We are defining it to include the math library, because calls are
  20. # made to math functions contained there.  YOU ONLY USE THE -lm ON
  21. # THIS LINE WHEN YOU NEED TO USE FUNCTIONS FROM THE MATH LIBRARY!!
  22. # Note ... the macro may be empty. I.e. just
  23. GLUTLFLAGS = -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXmu -lm -lxmps
  24. GLOWLFLAGS = $(GLUTLFLAGS) -lglow
  25. # Like the OBJECTS macro, the HEADERS macro is used to save typing
  26. # later.
  27. # You MAY find that this is NOT appropriate in all cases ...
  28. # generally we can make use of it.
  29. HEADERS =
  30. # The CFLAGS macro is used to indicate flags for the compiler.
  31. # Eg. you MAY want to put '-g' on this line to generate symbol table
  32. # information so that you can use the 'ladebug' debugger to view your
  33. # program in execution, or you could use the '-O' option to do
  34. # optimized compilation, etc.  Again, as with other macros, it may
  35. # be empty.
  36. CFLAGS = 
  37. # This ends the MACRO DEFINITIONS SECTION
  38. # DEPENDENCIES AND RULES SECTION
  39. # This next section contains groups of lines that look like:
  40. #
  41. # target: dependencies
  42. #       rules(s) or action(s)
  43. #
  44. # Note that each group has a line that starts on the left margin
  45. # followed by one or more lines that begin with a TAB
  46. # This is VERY IMPORTANT ... THE RULES MUST START WITH A TAB!!!!
  47. #
  48. # The dependencies list the files that the target DEPENDS on,
  49. # the rules tell how to (re)construct the target.
  50. #
  51. # Where ever you see a $(macro_name), the 'make' utility makes a
  52. # text substitution, using the Right Hand Side of the macro
  53. # definitions from the above section.
  54. #
  55. # Compiling source code to create the object files
  56. all: $(OBJECTS)
  57. $(CC) -o $(OUTPUT) $(OBJECTS) $(GLOWLFLAGS)
  58. main.o: main.cpp
  59. $(CC) $(CFLAGS) -c main.cpp
  60. display.o: display.h display.cpp
  61. $(CC) $(CFLAGS) -c display.cpp

Reply

Marsh Posté le 20-06-2001 à 19:00:24    

maintenant ça compile sans aucune erreur
mais et oui y'a un mais a l'execution du prog on a l'erreur suivante:
 
./prog: error while loading shared libraries: libglow.so: cannot load shared object file: No such file or directory
 
il s'agit du prog test de glow fournit dans le tut avec le makefile il compile bien et il fonctionne mais qd je crée un makefile ou que je le compile a la main le prog resultant et foireux!!!
 
j'en ai marre de ces erreurs je deviens fou  :crazy:  :pt1cable:  
Les libraries sont pourtant bien installé!!!

Reply

Marsh Posté le 21-06-2001 à 08:46:54    

tu as copie libglow.so.1.0.2 et libglow.a.1.0.2 dans le repertoire /usr/lib/ ??
 
ah oui, faut pas oublier (mais la apres c'est plus de la prog, c'est de l'unix) de definir des liens symboliques :
 
dans le repertoire /usr/lib/ :
ln -s -f libglow.so.1.0.2 libglow.so
ln -s -f libglow.a.1.0.2 libglow.a
 
Et comme ca les fichiers .so et .a sont crees (et seront donc trouves par ton programme), ils s'agit en fait de liens symboliques (ou d'alias si tu veux) vers les libraires "reelles" .so.1.0.2 et .a.1.0.2... :)

Reply

Marsh Posté le 21-06-2001 à 10:22:20    

j'ai bien fait tout ça !!!!  (chez moi ) mais y'a un autre pb c que la ou on bosse l'administrateur ne veut rien installer sur le reseau donc il a mis les lib en vrac sur un poste quelconque faudrait pouvoir utiliser les lib la ou elles sont (et sans lien symbolique sur ce poste!!! le but etant de  faire tourner le prog sur n'importe quel poste du réseau!!)
 
mais bon si deja j'arrive a avoir un produit qui fonctionne chez moi je pourrais toujours essayer de negocier avec l'administrateur!!
 
en tout cas je vois pas pourquoi y'a cette erreur avec les lib et leur lien bien installé!!!!

Reply

Marsh Posté le 21-06-2001 à 10:28:35    

et dans le Makefile (glowlflags), tu as rajoute dans la ligne de commande le repertoire ou sont installees les librairies ?
 
genre : -L/home/user/prog/glow/ ??

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed