2011-10-14 43 views
10

có vẻ như tôi không còn có thể biên dịch mã của tôi trong GCC bài cập nhật Ubuntu 11,10, mặc dù liên kết trong các thư viện với -l. Biên soạn với:GCC biên dịch có tài liệu tham khảo không xác định mặc dù trước đây chức năng liên kết Ubuntu

gcc -lm -lGL -lGLU -lglut T1.c

(Hai thư viện tôi đang cố gắng để liên kết và có khi bao gồm là dư thừa và toán)

Tất cả các thư viện và tập tin tiêu đề là nơi mà chúng được cho là (chúng đã không đi bất cứ nơi nào kể từ khi cập nhật) và tôi đã kiểm tra tất cả các cài đặt gói có liên quan của tôi. Ngoài ra, đây là các biến môi trường của tôi và chúng dường như theo thứ tự:

PATH =/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/trò chơi

C_INCLUDE_PATH =/usr/include

tôi không nghĩ rằng đó là một vấn đề với các mã như tôi không thể biên dịch tập tin tôi biên soạn thành công hôm qua. Nhưng tôi sẽ liên kết nó anyway chỉ trong trường hợp:

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

    const int WIDTH=640; 
    const int HEIGHT=480; 
    const float NEAR_CLIP=0.1f; 
    const float FAR_CLIP=100.0f; 
    const double INC_ROTATE=5; 
    double rotate=0; 

    void rotateObject() { 
      rotate+=INC_ROTATE; 
    } 

    void update() { 
      //rotateObject(); 
    } 

    void drawAxes() { 
     double x = 1.5, y = 1.5, z = 1.5; 
     glLineWidth(4); 
     glBegin(GL_LINES); 
      glColor3d(1,0,0); 
      glVertex3d(0,0,0); 
      glVertex3d(x,0,0); 
      glColor3d(0,1,0); 
      glVertex3d(0,0,0); 
      glVertex3d(0,y,0); 
      glColor3d(0,0,1); 
      glVertex3d(0,0,0); 
      glVertex3d(0,0,z); 
     glEnd(); 
     glLineWidth(1); 
    } 

    void render() { 
      glClear(GL_COLOR_BUFFER_BIT); 
      glLoadIdentity(); 
      gluLookAt(1.2,1.0,2.5,0.0,0.0,0.0,0.0,1.0,0.0); 
      drawAxes(); 
      glColor3d(1,1,1); 
      glRotated(rotate,0,0,1); 
      glutWireCube(1); 
    } 

    void display() { 
      update(); 
      render(); 
    } 

    void reshape(int width, int height) { 
      float fAspect=0; 
      float fovy=(M_PI/3); 
      float top=tan(fovy*0.5)*NEAR_CLIP; 
      float bottom=top; 
      float left=fAspect*bottom; 
      float right=fAspect*top; 

      glViewport(0,0,width,height); 
      glMatrixMode(GL_PROJECTION); 
      glLoadIdentity(); 
      glFrustum(left,right,bottom,top,NEAR_CLIP, FAR_CLIP); 
      glMatrixMode(GL_MODELVIEW); 

    } 

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

      glClearColor(0,0,0,1); 
      glutInit(&argc, argv); 
      glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); 
     glutInitWindowPosition(100,100); 
     glutInitWindowSize(320,320); 
     glutCreateWindow("T1"); 

     glutDisplayFunc(display); 
     glutReshapeFunc(reshape); 
     glutIdleFunc(display); 

     glutMainLoop(); 

      return 1; 
    } 

Thông báo lỗi:

 T1.c:(.text+0x63): undefined reference to `glLineWidth' 
    T1.c:(.text+0x6d): undefined reference to `glBegin' 
    T1.c:(.text+0x82): undefined reference to `glColor3d' 
    T1.c:(.text+0x93): undefined reference to `glVertex3d' 
    T1.c:(.text+0xa5): undefined reference to `glVertex3d' 
    T1.c:(.text+0xba): undefined reference to `glColor3d' 
    T1.c:(.text+0xcb): undefined reference to `glVertex3d' 
    T1.c:(.text+0xe1): undefined reference to `glVertex3d' 
    T1.c:(.text+0xf6): undefined reference to `glColor3d' 
    T1.c:(.text+0x107): undefined reference to `glVertex3d' 
    T1.c:(.text+0x11d): undefined reference to `glVertex3d' 
    T1.c:(.text+0x122): undefined reference to `glEnd' 
    T1.c:(.text+0x12f): undefined reference to `glLineWidth' 
    /tmp/cc4VqRwQ.o: In function `render': 
    T1.c:(.text+0x143): undefined reference to `glClear' 
    T1.c:(.text+0x148): undefined reference to `glLoadIdentity' 
    T1.c:(.text+0x18a): undefined reference to `gluLookAt' 
    T1.c:(.text+0x1b1): undefined reference to `glColor3d' 
    T1.c:(.text+0x1ce): undefined reference to `glRotated' 
    T1.c:(.text+0x1db): undefined reference to `glutWireCube' 
    /tmp/cc4VqRwQ.o: In function `reshape': 
    T1.c:(.text+0x22e): undefined reference to `tan' 
    T1.c:(.text+0x28a): undefined reference to `glViewport' 
    T1.c:(.text+0x294): undefined reference to `glMatrixMode' 
    T1.c:(.text+0x299): undefined reference to `glLoadIdentity' 
    T1.c:(.text+0x2da): undefined reference to `glFrustum' 
    T1.c:(.text+0x2e4): undefined reference to `glMatrixMode' 
    /tmp/cc4VqRwQ.o: In function `main': 
    T1.c:(.text+0x30b): undefined reference to `glClearColor' 
    T1.c:(.text+0x31e): undefined reference to `glutInit' 
    T1.c:(.text+0x328): undefined reference to `glutInitDisplayMode' 
    T1.c:(.text+0x337): undefined reference to `glutInitWindowPosition' 
    T1.c:(.text+0x346): undefined reference to `glutInitWindowSize' 
    T1.c:(.text+0x350): undefined reference to `glutCreateWindow' 
    T1.c:(.text+0x35d): undefined reference to `glutDisplayFunc' 
    T1.c:(.text+0x367): undefined reference to `glutReshapeFunc' 
    T1.c:(.text+0x374): undefined reference to `glutIdleFunc' 
    T1.c:(.text+0x379): undefined reference to `glutMainLoop' 
    collect2: ld returned 1 exit status 

Tôi thành thật không có đầu mối tại sao gcc không thể tìm thấy các tập tin nguồn cần thiết. Bất kỳ trợ giúp nào bạn có thể cung cấp sẽ được đánh giá cao, cảm ơn trước.

EDIT:

Tôi đang sử dụng freeglut Added thông báo lỗi

Trả lời

24

Tôi đoán ld (linker) đã được thay đổi để làm việc một chút khác nhau.

Đặt thư viện của bạn sau khi các tập tin nguồn

gcc T1.c -lm -lGL -lGLU -lglut 

Hoặc apt-get install binutils-gold, rõ ràng mối liên kết vàng mới sẽ vẫn xử lý các thư viện chia sẻ phụ thuộc ngay cả khi chúng xuất hiện đầu tiên trên dòng lệnh.

+0

Và nó biên dịch. Đó là khá ngớ ngẩn, cảm ơn bạn rất nhiều – user975391

+1

Cảm ơn bạn, tôi đã dành một ngày cố gắng để tìm ra lý do tại sao chương trình của tôi không biên dịch ngày 11.10! Bạn có thể mở rộng về lý do thay đổi này xảy ra không? – kristianp

+0

Cảm ơn bạn và cảm ơn Google –

Các vấn đề liên quan