La compilation et runnin OpenGL (glut) programme sous ubuntu 10.10
J'ai écrit ce code:
#include <stdio.h>
#include <stdlib.h>
#include <GL/glx.h>
#include <GL/gl.h>
#include <GL/glut.h>
void init()
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);
}
void lineSegment()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glBegin(GL_TRIANGLES);
glVertex2i(40,120);
glVertex2i(40,20);
glVertex2i(80,20);
glEnd();
glFlush();
}
int main()
{
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50,100);
glutInitWindowSize(400,300);
glutCreateWindow("An Example OpenGL....");
init();
glutDisplayFunc(lineSegment);
glutMainLoop();
return 0;
}
et c'est mon erreur.
[email protected]:~$ gcc gl.cpp
/tmp/cchfRGT2.o: In function `init()':
gl.cpp:(.text+0x2a): undefined reference to `glClearColor'
gl.cpp:(.text+0x36): undefined reference to `glMatrixMode'
gl.cpp:(.text+0x5a): undefined reference to `gluOrtho2D'
/tmp/cchfRGT2.o: In function `lineSegment()':
gl.cpp:(.text+0x6e): undefined reference to `glClear'
gl.cpp:(.text+0x8d): undefined reference to `glColor3f'
gl.cpp:(.text+0x99): undefined reference to `glBegin'
gl.cpp:(.text+0xad): undefined reference to `glVertex2i'
gl.cpp:(.text+0xc1): undefined reference to `glVertex2i'
gl.cpp:(.text+0xd5): undefined reference to `glVertex2i'
gl.cpp:(.text+0xda): undefined reference to `glEnd'
gl.cpp:(.text+0xdf): undefined reference to `glFlush'
/tmp/cchfRGT2.o: In function `main':
gl.cpp:(.text+0xf6): undefined reference to `glutInitDisplayMode'
gl.cpp:(.text+0x10a): undefined reference to `glutInitWindowPosition'
gl.cpp:(.text+0x11e): undefined reference to `glutInitWindowSize'
gl.cpp:(.text+0x12a): undefined reference to `glutCreateWindow'
gl.cpp:(.text+0x13b): undefined reference to `glutDisplayFunc'
gl.cpp:(.text+0x140): undefined reference to `glutMainLoop'
/tmp/cchfRGT2.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
Je ne sais pas ce que j'ai à faire.merci de m'apprendre comment le faire.
- Je commence à en avoir marre des ce, mais de toute façon: matrice de Projection et de la Fenêtre de configuration appartiennent à la routine d'affichage, pas à quelque obscur "init" de la fonction. -- La solution à votre problème réel a été donné à une réponse déjà.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez utiliser
g++
pour compiler du code C++, pasgcc
.Ensuite, vous devez mettre un lien pour les bibliothèques OpenGL lors de la construction de votre programme:
De la ligne de commande ci-dessus va produire un fichier exécutable appelé
gl
dans le répertoire courant. Sans-o
, l'exécutable résultant est appeléa.out
(sur ma plate-forme), ce qui n'est probablement pas ce que vous voulez.(Notez que la fonction de chiffrement de commentaire ci-dessous, les fichiers source doivent précéder la bibliothèque options pour
g++
pour les compiler.)mv gl.cpp gl.c
parce que theres pas de C++ que ce soit utilisé.cpp
extension est en fait un sens et le code complet de classes en une semaine 😉-l
options, tout comme @warl0ck a dit dans sa réponse!g++
pratique dès maintenant à vérifier, mais je ne vous crois. Je vais mettre à jour ma réponse en conséquence. Merci pour le heads-up 🙂Vous devez placer le fichier en face de toute l'
-l
options , ici pour un exemple:g++ X.cpp -lX11 -lGL -lGLU -lglut -g -Wall -O2 -o X
Assurez-vous également que les paquets suivants est déjà présent:
sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev
Et assurer
glx
module est chargé dans XorgBonne chance avec OpenGL programming !
-lX11
pour compiler les commandes de son fonctionne très bien sur ubuntu 16.04 lts