tirenweb
tirenweb

Reputation: 31739

Trying to compile my first opengl/mesa app

I'm trying to compile my first program openGL app.

This is my code:

#include <GL/gl.h>      
#include <GL/glu.h>     
#include <GL/glut.h>    

using namespace std;

int main(int argc, char** argv) {

    glutInit(&argc, argv);

    return 0;
}

I have then linked /usr/lib/libglut.a to the project.

When I try to compile I'm getting this error:

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/home/tirengarfio/programacion/3Ded'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/3ded
make[2]: Entering directory `/home/tirengarfio/programacion/3Ded'
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++     -o dist/Debug/GNU-Linux-x86/3ded build/Debug/GNU-Linux-x86/main.o /usr/lib/libglut.a 
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `fghGetWindowProperty':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `fghGetAtom':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `glutInit':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `fgDeinitialize':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `fgDeinitialize':
/usr/lib/libglut.a(libglut_la-freeglut_init.o): In function `fgDeinitialize':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `fghcbDisplayWindow':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `fghcbDisplayWindow':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `fghcbDisplayWindow':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `glutMainLoopEvent':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `glutMainLoopEvent':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `glutMainLoopEvent':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `glutMainLoopEvent':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `glutMainLoopEvent':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `glutMainLoopEvent':
/usr/lib/libglut.a(libglut_la-freeglut_main.o): In function `glutMainLoop':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fghGetVMaxExtent':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o):(.text+0xf93): more undefined references to `glVertex2i' follow
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
make[2]: Leaving directory `/home/tirengarfio/programacion/3Ded'
make[1]: Leaving directory `/home/tirengarfio/programacion/3Ded'
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o):(.text+0x1043): more undefined references to `glVertex2i' follow
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_menu.o): In function `fgDisplayMenu':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `fghGetConfig':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGetModeValues':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGetModeValues':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGetModeValues':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutDeviceGet':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGet':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGet':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGet':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGet':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGet':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGet':
/usr/lib/libglut.a(libglut_la-freeglut_state.o): In function `glutGet':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `toggle_fullscreen':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `toggle_fullscreen':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `toggle_fullscreen':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutPopWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutPushWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutPositionWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutSetIconTitle':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutSetIconTitle':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutSetWindowTitle':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutSetWindowTitle':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutIconifyWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutIconifyWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutHideWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutHideWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutHideWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutShowWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `glutShowWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `fgCloseWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `fgCloseWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `fgCloseWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `fghCreateNewContext':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `fgSetWindow':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `fgChooseFBConfig':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `fgChooseFBConfig':
/usr/lib/libglut.a(libglut_la-freeglut_window.o): In function `fgChooseFBConfig':
...
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/3ded] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 1s)

Any idea?

Ubuntu 10.04/Netbeans 6.9.1

Upvotes: 1

Views: 654

Answers (2)

karlphillip
karlphillip

Reputation: 93468

Assuming you have all the shared libraries installed on your system, for a C source code:

gcc hello.c -o hello -lGL -lglut -lGLU

For a C++ code:

g++ hello.cpp -o hello -lGL -lglut -lGLU

Don't use the static libraries files.a if you really don't need to. Else you'll have to satisfy those dependencies on your own.

Upvotes: 2

Omri Barel
Omri Barel

Reputation: 9490

The clue is here: more undefined references to 'glVertex2i' follow

Basically you need to link against the OpenGL library as well (glVertex2i is an OpenGL function), glut doesn't provide OpenGL functions, only additional functions to make life easy.

Try adding -lGL to the command line (at the end).

EDIT: This is only true for the static version (/usr/lib/libglut.a). The shared object version knows how to find libGL, so you can simply use -lglut instead of /usr/lib/libglut.a.

Upvotes: 3

Related Questions