[RESOLU] probleme compil opengl / glut sous linux

probleme compil opengl / glut sous linux [RESOLU] - C++ - Programmation

Marsh Posté le 18-08-2005 à 14:50:59    

hello
 
[blabla]..........[/blabla]
 
j'ai un probleme de débutant j'ai voulu tester un programme basique dont le code provient d'un bouqin
c'est censé faire tourner un carré...
 
le code est le suivant

Code :
  1. #include <stdlib.h>
  2. #include <GL/gl.h>
  3. #include <GL/glut.h>
  4. static GLfloat spin = 0.0;
  5. void init(void)
  6. {
  7. glClearColor(0.0, 0.0, 0.0, 0.0);
  8. glShadeModel(GL_FLAT);
  9. }
  10. void display(void)
  11. {
  12. glClear(GL_COLOR_BUFFER_BIT);
  13. glPushMatrix();
  14. glRotatef(spin, 0.0, 0.0, 1.0);
  15. glColor3f(1.0 , 1.0, 1.0);
  16. glRectf( -25.0, -25.0, 25.0, 25.0);
  17. glPopMatrix();
  18. glutSwapBuffers();
  19. }
  20. void spinDisplay(void)
  21. {
  22. spin = spin +2.0;
  23. if(spin < 360.0){
  24.  spin = spin -360.0;
  25.  }
  26. glutPostRedisplay();
  27. }
  28. void reshape(int w, int h)
  29. {
  30. glViewport(0, 0, (GLsizei) w, (GLsizei)h);
  31. glMatrixMode(GL_PROJECTION);
  32. glLoadIdentity();
  33. glOrtho( -50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
  34. glMatrixMode(GL_MODELVIEW);
  35. glLoadIdentity();
  36. }
  37. void mouse(int button , int state, int x, int y)
  38. {
  39. switch(button){
  40.  case GLUT_LEFT_BUTTON:
  41.   if(state == GLUT_DOWN)
  42.    glutIdleFunc(spinDisplay);
  43.   break;
  44.  case GLUT_MIDDLE_BUTTON:
  45.   if(state == GLUT_DOWN)
  46.    glutIdleFunc(NULL);
  47.   break;
  48.  default:
  49.   break;
  50.  }
  51. }
  52. int main(int argc, char** argv)
  53. {
  54. glutInit(&argc, argv);
  55. glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  56. glutInitWindowSize(250, 250);
  57. glutInitWindowPosition(100, 100);
  58. glutCreateWindow(argv[0]);
  59. init();
  60. glutDisplayFunc(display);
  61. glutReshapeFunc(reshape);
  62. glutMouseFunc(mouse);
  63. glutMainLoop();
  64. return 0;
  65. }


 
et pour le makefile

Code :
  1. but : opengl
  2. double.o : double.cc
  3. g++ -c double.cc
  4. opengl : double.o
  5. g++ double.o -o prog


 
le code est bon ca compile le fichier .o mais jobtiens  

Code :
  1. g++ double.o -o prog
  2. double.o(.text+0x1f): In function `init()':
  3. : undefined reference to `glClearColor'
  4. double.o(.text+0x2f): In function `init()':
  5. : undefined reference to `glShadeModel'
  6. double.o(.text+0x47): In function `display()':
  7. : undefined reference to `glClear'
  8. double.o(.text+0x4f): In function `display()':
  9. : undefined reference to `glPushMatrix'
  10. double.o(.text+0x6c): In function `display()':
  11. : undefined reference to `glRotatef'
  12. double.o(.text+0x89): In function `display()':
  13. : undefined reference to `glColor3f'
  14. double.o(.text+0xa9): In function `display()':
  15. : undefined reference to `glRectf'
  16. double.o(.text+0xb1): In function `display()':
  17. : undefined reference to `glPopMatrix'
  18. double.o(.text+0xb6): In function `display()':
  19. : undefined reference to `glutSwapBuffers'
  20. double.o(.text+0x102): In function `spinDisplay()':
  21. : undefined reference to `glutPostRedisplay'
  22. double.o(.text+0x119): In function `reshape(int, int)':
  23. : undefined reference to `glViewport'
  24. double.o(.text+0x129): In function `reshape(int, int)':
  25. : undefined reference to `glMatrixMode'
  26. double.o(.text+0x131): In function `reshape(int, int)':
  27. : undefined reference to `glLoadIdentity'
  28. double.o(.text+0x17e): In function `reshape(int, int)':
  29. : undefined reference to `glOrtho'
  30. double.o(.text+0x18e): In function `reshape(int, int)':
  31. : undefined reference to `glMatrixMode'
  32. double.o(.text+0x196): In function `reshape(int, int)':
  33. : undefined reference to `glLoadIdentity'
  34. double.o(.text+0x1c5): In function `mouse(int, int, int, int)':
  35. : undefined reference to `glutIdleFunc'
  36. double.o(.text+0x1da): In function `mouse(int, int, int, int)':
  37. : undefined reference to `glutIdleFunc'
  38. double.o(.text+0x20b): In function `main':
  39. : undefined reference to `glutInit'
  40. double.o(.text+0x218): In function `main':
  41. : undefined reference to `glutInitDisplayMode'
  42. double.o(.text+0x22d): In function `main':
  43. : undefined reference to `glutInitWindowSize'
  44. double.o(.text+0x23c): In function `main':
  45. : undefined reference to `glutInitWindowPosition'
  46. double.o(.text+0x24c): In function `main':
  47. : undefined reference to `glutCreateWindow'
  48. double.o(.text+0x261): In function `main':
  49. : undefined reference to `glutDisplayFunc'
  50. double.o(.text+0x271): In function `main':
  51. : undefined reference to `glutReshapeFunc'
  52. double.o(.text+0x281): In function `main':
  53. : undefined reference to `glutMouseFunc'
  54. double.o(.text+0x289): In function `main':
  55. : undefined reference to `glutMainLoop'
  56. collect2: ld returned 1 exit status
  57. make: *** [opengl] Erreur 1


 
j'ai essayé de rajouter des arguments du genre "-lgl -lglu -lglut -lm -lX11" a la commande qui compile mais elle ne l'est trouve pas
 
 
merci d'avance de maider ca doit pas etre bien dur mais bon ca bloque tout :s


Message édité par pinpoy le 19-08-2005 à 15:49:36
Reply

Marsh Posté le 18-08-2005 à 14:50:59   

Reply

Marsh Posté le 18-08-2005 à 16:46:42    

avec :
 -lGLU -lGL -lglut -lm ça passe ? (distinction de la casse)

Reply

Marsh Posté le 19-08-2005 à 04:32:04    

non mais je reessairai demain jete tienso courant merci davoir repndu

Reply

Marsh Posté le 19-08-2005 à 10:23:08    

Quel IDE utilises tu ? (Dev-C++) ?

Reply

Marsh Posté le 19-08-2005 à 15:30:14    

mdk 10.1 g++
 
je vais faire des tests la, je vais préciser les messages d'erreur obtenus quand je rajoute -lGLU -lGL -lglut -lm mais en gros il me dis pour chacun qu'ils les trouves pas

Reply

Marsh Posté le 19-08-2005 à 15:40:47    

Tu as bien les bibliothèques installées ?
(regarde avec ldconfig si GL, GLU sont présents)
PS: avec gcc ça passe ?


Message édité par jlighty le 19-08-2005 à 15:42:17
Reply

Marsh Posté le 19-08-2005 à 15:48:35    

bon c bon, oui les bibliotheques étaients bien installées car le compilateur génère le .o sans erreur mais c'est apres à la génération de l'exécutable que le .o ne trouvaient pas les bibliothèques j'ai l'impression
 
j'ai pris le Makefile dun ami qui s'y connait un peu plus que moi je l'ai modifié et ca a marché
 
code du nouveau makefile  

Code :
  1. CC=g++ -O3 -Wall
  2. LIBS=-lGL -lGLU -lglut  -lX11 -lXmu -lXi -lm -ljpeg
  3. LIBSDIR= -L/usr/X11R6/lib
  4. all : moteur
  5. moteur : double.cc
  6. ${CC} double.cc -o Inea ${LIBS} ${LIBSDIR}
  7. clean :
  8. rm -f moteur *~ \#*\#


 
a la fin de nom de l'exe est Inea
 
en fait ce qu'il me manquait je pense c'était juste d'indiquer où se trouvaient les librairies
 
 
bon ben pb résolu :)
 
 
au fait merci jlighty


Message édité par pinpoy le 19-08-2005 à 15:53:16
Reply

Marsh Posté le 19-08-2005 à 15:58:09    

Ben tu aurais pu taper la ligne complète dans la console !
g++ -l ..... double.cc -o Inea

Reply

Marsh Posté le 19-08-2005 à 16:08:28    

j'ai essayé mais il voulait pas il lui manquait le libsdir apparemment qui doit servir lors de la génératiion de l'exécutable à partir du fichier .o
 
enfin bon ca marche c fou ca :)

Reply

Sujets relatifs:

Leave a Replay

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