2011-10-14 29 views
10

numaralı bağlantıya rağmen tanımlanmamış referanslara sahiptir. Artık kodları, -l ile kütüphanelere bağlanmasına rağmen, GCC gönderiminde Ubuntu 11.10 güncellemesinde derleyemiyorum. ile derleniyor:GCC derlemesi, daha önce işlevsel olan Ubuntu

gcc lm -lGL -lGLU T1.c -lglut

tüm kütüphaneler, (i bağlamak ve içerdiğinden yaşamaya çalışıyorum iki kütüphane fazlalığı ve matematik) ve başlık dosyaları olması gereken yerdeyse (güncellemeden beri hiçbir yere gitmediler) ve tüm ilgili paket kurulumlarımı kontrol ettim. Buna ek olarak, benim ortam değişkenlerim var ve şu sıralar görünüyorlar:

PATH =/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin/sbin:/bin:/usr/oyunlar

C_INCLUDE_PATH =/usr/include

Ben başarıyla derlenmiş dosyaları derlemek edemiyorum gibi koduyla ilgili bir sorun olduğunu sanmıyorum dün. Ama her ihtimale karşı yine de bağlayacağız:

#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; 
    } 

Hata mesajları:

 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 

dürüst gcc gerekli kaynak dosyalarını bulamıyor neden hiçbir ipucu var. Sağlayabileceğiniz her türlü yardım, şimdiden teşekkürler.

DÜZENLEME:

kullanıyorum freeglut Eklenen hata iletileri

cevap

24

I ld (bağlayıcı) tahmin ediyorum biraz farklı çalışma değiştirildi.

komut satırında ilk görünse bile

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

Ya apt-get install binutils-gold, görünüşe yeni altın bağlayıcı hala bağımlı paylaşılan kütüphaneleri işleyecek kaynak dosyasının sonra kütüphaneleri koyun.

+0

Ve derler. Bu oldukça aptalca, çok teşekkürler – user975391

+1

Teşekkür ederim, programımın neden 11.10'da derlemediğini anlamaya çalışmak için bir gün harcadım! Bu değişikliğin neden gerçekleştiğini genişletebilir misin? – kristianp

+0

Teşekkür ederim nos & teşekkürler Google –