2013-07-07 35 views
1

我想用gcc -lGL -lglut ex2_6.c -o ex2_6來編譯它。 以下給出了錯誤。我在ihis鏈接http://www.glprogramming.com/red/chapter02.html處獲得了此代碼。請參閱此鏈接上的示例2-6。下面的程序有什麼問題

[email protected]:~$ gcc -lGL -lglut ex2_6.c -o ex2_6 
/tmp/ccrgl3Y9.o:ex2_6.c:function reshape: error: undefined reference to 'gluOrtho2D' collect2: ld returned 1 exit status 

代碼:

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

void display(void) 
{ 
    GLubyte fly[] = { 
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
     0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, 
     0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20, 
     0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20, 
     0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, 
     0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 
     0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 
     0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 
     0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC, 
     0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, 
     0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, 
     0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0, 
     0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, 
     0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08, 
     0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08, 
     0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08}; 
    GLubyte halftone[] = { 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 
     0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55}; 

    glClear (GL_COLOR_BUFFER_BIT); 
    glColor3f (1.0, 1.0, 1.0); 

/* draw one solid, unstippled rectangle,  */  
/* then two stippled rectangles    */ 
    glRectf (25.0, 25.0, 125.0, 125.0); 
    glEnable (GL_POLYGON_STIPPLE); 
    glPolygonStipple (fly); 
    glRectf (125.0, 25.0, 225.0, 125.0); 
    glPolygonStipple (halftone); 
    glRectf (225.0, 25.0, 325.0, 125.0); 
    glDisable (GL_POLYGON_STIPPLE); 

    glFlush(); 
} 

void init (void) 
{ 
    glClearColor (0.0, 0.0, 0.0, 0.0); 
    glShadeModel (GL_FLAT);  
} 

void reshape (int w, int h) 
{ 
    glViewport (0, 0, (GLsizei) w, (GLsizei) h); 
    glMatrixMode (GL_PROJECTION); 
    glLoadIdentity(); 
    gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h); 
} 

int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); 
    glutInitWindowSize (350, 150); 
    glutCreateWindow (argv[0]); 
    init(); 
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape); 
    glutMainLoop(); 
    return 0; 
} 

回答

1

您正在嘗試使用gluOrtho2D()不反對OpenGL Utility Library鏈接。

試試這個:

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

或切換到glOrtho()和迴避整個問題。

+0

謝謝。它的工作。 – hemkar

1

庫連接標誌需要去年底:

cc -o foo foo.c -lGL -lglut 
+0

我已經嘗試過,但也有同樣的錯誤。 – hemkar

+0

@hemkar然後你有額外的錯誤。你確定你確實在做這個嗎? – 2013-07-07 04:48:25

+0

解釋downvote! – 2013-07-08 13:57:15