试图编译我的第一个opengl / mesa应用程序

问题描述

| 我正在尝试编译我的第一个程序openGL应用程序。 这是我的代码
#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;
}
然后,我将ѭ1链接到该项目。 当我尝试编译时,出现此错误
\"/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)
任何想法? Ubuntu 10.04 / Netbeans 6.9.1     

解决方法

        假设您已在系统上安装了所有共享库,并获得了C源代码:
gcc hello.c -o hello -lGL -lglut -lGLU
对于C ++代码:
g++ hello.cpp -o hello -lGL -lglut -lGLU
如果确实不需要,请不要使用静态库文件。否则,您将不得不自己满足这些依赖性。     ,        线索在这里:
more undefined references to \'glVertex2i\' follow
基本上,您还需要链接到OpenGL库(glVertex2i是OpenGL函数),glut不提供OpenGL函数,只有附加功能才能使生活变得轻松。 尝试将-lGL添加到命令行(最后)。 编辑:这仅适用于静态版本(/usr/lib/libglut.a)。共享库版本知道如何找到libGL,因此您可以简单地使用-lglut而不是/usr/lib/libglut.a。