Compiler un prog C/OpenGL avec le terminal

MathMath Membre
05:09 modifié dans API AppKit #1
Bonjour,

Y a un truc que je comprends pas alors je vous pose la question  :)

J'essaye de compiler de petits programmes opengl mais je n'y arrive pas.

En fait je fais ça :

1 - je télécharge un exemple de programme en C avec de l'openGL sur le net (utilisant la glut)
2 - je change le #include <GL/glut.h> en #include <GLUT/glut.h> (et GL/gl.h en OpenGL/gl.h et GL/glu.h en OpenGL/glu.h si nécessaire)
3 - je compile avec le terminal et la commande gcc essai.c -o essai

et j'obtiens :

/usr/bin/ld: Undefined symbols:<br />_glBegin<br />_glClear<br />_glClearColor<br />_glClearDepth<br />_glColor3f<br />_glDepthFunc<br />_glEnable<br />_glEnd<br />_glHint<br />_glLoadIdentity<br />_glMatrixMode<br />_glPopMatrix<br />_glPushMatrix<br />_glRotatef<br />_glShadeModel<br />_glTranslatef<br />_glVertex3f<br />_glViewport<br />_gluPerspective<br />_glutCreateWindow<br />_glutDisplayFunc<br />_glutFullScreen<br />_glutIdleFunc<br />_glutInit<br />_glutInitDisplayMode<br />_glutInitWindowSize<br />_glutKeyboardFunc<br />_glutMainLoop<br />_glutReshapeFunc<br />_glutReshapeWindow<br />_glutSpecialFunc<br />_glutSwapBuffers<br />collect2: ld returned 1 exit status<br />


et je comprend pas du tout pourquoi.

Quelqu'un aurait une idée ?
Merci d'avance.

Réponses

  • BruBru Membre
    05:09 modifié #2
    dans 1149204603:

    et je comprend pas du tout pourquoi.


    Bin, c'est normal !
    Tu utilises des fonctions OpenGL, mais apparemment, tu n'indiques pas à  gcc où trouver la library/framework dans laquelle ces fonctions sont implantées.

    Donc, au moment du liage (quand les noms des fonctions sont remplacées par les références d'accès à  ces dernières), le linker (qui se nomme ld) ne trouve rien et râle.

    Pour ajouter les library/frameworks OpenGL à  ton projet, essaie ça :
    [tt]gcc essai.c -framework GLUT -framework OpenGL -o essai [/tt]

    .
  • MathMath Membre
    05:09 modifié #3
    Merci Bru.

    Je me doutais qu'il fallait faire un truc dans le genre car sur le net je trouvais des exemples avec -L lglut mais c'était pour linux et ça ne fonctionnait pas sur le Mac.

    Merci :)
  • AliGatorAliGator Membre, Modérateur
    05:09 modifié #4
    dans 1149245029:

    Merci Bru.

    Je me doutais qu'il fallait faire un truc dans le genre car sur le net je trouvais des exemples avec -L lglut mais c'était pour linux et ça ne fonctionnait pas sur le Mac.

    Merci :)
    Je suis loin d'être spécialiste là  dedans donc je vais peut-être dire une grosse connerie, mais il me semble que "-framework NomDuFramework" revient à  faire -lLib1 -lLib2 -lLib3... en incluant toutes les librairies fournies avec le framework (qui peuvent être nombreuses)... non ?

    Puisque, pour moi, un framework est un ensemble de librairies. Donc à  la limite la commande que tu avais trouvée avec les -l était peut-être pas trop mal (mais il aurait fallu l'adapter poru spécifier les bons chemins et tout ce qu'il faut) alors qu'avec le -framework de Bru on se pose pas de question et ça marche il va chercher tout seul ce qu'il faut.
Connectez-vous ou Inscrivez-vous pour répondre.