GCC编译有未定义的引用,尽管以前功能链接Ubuntu

use*_*391 10 ubuntu gcc reference undefined

尽管在库中用-l链接,我似乎无法再在GCC发布Ubuntu 11.10更新中编译我的代码.编译:

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

(我试图链接的两个库,包含的是过剩和数学)

所有的库和头文件都应该是它们的位置(自更新以来它们没有出现过),我已经检查了所有相关的软件包安装.另外这里是我的环境变量,它们似乎是有序的:

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;
    }
Run Code Online (Sandbox Code Playgroud)

错误消息:

     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
Run Code Online (Sandbox Code Playgroud)

老实说,我不知道为什么gcc找不到所需的源文件.我们将非常感谢您提供的任何帮助,在此先感谢您.

编辑:

我正在使用freeglut添加错误消息

nos*_*nos 24

我猜ld(链接器)已被改变为有点不同的工作.

将您的库放在源文件之后

 gcc T1.c -lm -lGL -lGLU -lglut 
Run Code Online (Sandbox Code Playgroud)

或者apt-get install binutils-gold,显然新的黄金链接器仍将处理依赖的共享库,即使它们首先出现在命令行中.