2011-10-14 1 views
10

-lでライブラリをリンクしていてもGCCのUbuntu 11.10アップデートでコードをコンパイルできなくなったようです。でコンパイル:GCCのコンパイルに、以前に機能していたリンクがあったにもかかわらず、未定義の参照がありました

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

(含まれて私はリンクしていしようとしている2つのライブラリが供給過剰と数学です)

すべてのライブラリとヘッダーファイルはどこにあるのか(アップデート後にどこにも行きませんでした)、関連パッケージのインストールをすべて確認しました。また、ここに私の環境変数があり、それらは順番にあるようです:

PATH =/usr/lib/lightdm/lightdm:/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ USR/binに:/ sbinに:/ binにします。/ usr /ゲーム

C_INCLUDE_PATH =は/ usr/

が含まれ、私は私が正常にコンパイルされたファイルをコンパイルすることができないんだと私はそれがコードの問題だとは思いません昨日。しかし、私はとにかくそれをリンクします念のために:

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

エラーメッセージ:

 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 

私は正直にgccが必要なソースファイルを見つけることができない理由は見当もつかない。あなたが提供できるいかなる助力も、事前に感謝します。

EDIT:

私が使用しているfreeglut 追加のエラーメッセージ

答えて

24

私はLD(リンカ)を推測しているが、異なるビットを動作するように変更されました。

ソースファイル

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

またはapt-get install binutils-gold後にあなたのライブラリを入れて、明らかに新しい金リンカーはまだ彼らは最初のコマンドラインに表示される場合でも、依存共有ライブラリを処理します。

+0

そしてコンパイルします。それはむしろ愚かです、ありがとうございます。 – user975391

+1

ありがとう、私は私のプログラムが11.10でコンパイルされない理由を解決しようと一日を費やしました!この変化が起こった理由を広げることができますか? – kristianp

+0

ありがとうございましたGoogleに感謝します –

関連する問題