Подтвердить что ты не робот

Компиляция GCC имеет undefined ссылки, несмотря на ранее функциональные ссылки Ubuntu

Кажется, я больше не могу скомпилировать свой код в обновлении GCC post Ubuntu 11.10, несмотря на ссылку в библиотеках с -l. Компиляция с помощью:

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

(Две библиотеки, которые я пытаюсь связать и имеют в качестве включений, - это глушь и математика)

Все библиотеки и файлы заголовков находятся там, где они должны быть (они никуда не ушли с момента обновления), и я проверил все мои соответствующие установки пакетов. Кроме того, здесь приведены переменные среды и, похоже, они в порядке:

PATH =/USR/Lib/LightDM/LightDM:/USR/локальные/SBIN:/USR/локальные/бен:/USR/SBIN:/USR/бен:/SBIN:/бен:/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 Добавлены сообщения об ошибках

4b9b3361

Ответ 1

Я предполагаю, что ld (компоновщик) был изменен, чтобы работать немного по-другому.

Поместите свои библиотеки после исходного файла

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

Или apt-get install binutils-gold, очевидно, новый золотой линкер все равно будет обрабатывать зависимые разделяемые библиотеки, даже если они появляются сначала в командной строке.