Почему эта программа GLUT не скомпилируется?Я скучаю по библиотекам или заголовкам? - PullRequest
2 голосов
/ 28 июля 2011

Я только начал использовать Linux (Mint 11), и недавно я решил заняться программированием на OpenGL в качестве хобби. Я нахожу код и методы достаточно простыми, однако мне трудно пытаться собрать все ресурсы в нужном месте. Код:

#include <stdlib.h>
#include <stdio.h>
#include <GL/glew.h>
#ifdef __APPLE__
#  include <GLUT/glut.h>
#else
#  include <GL/glut.h>
#endif

static int make_resources(void)
{
    return 1;
}

static void update_fade_factor(void)
{
}

static void render(void)
{
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glutSwapBuffers();
}


int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    glutInitWindowSize(400, 300);
    glutCreateWindow("Hello World");
    glutDisplayFunc(&render);
    glutIdleFunc(&update_fade_factor);
        glewInit();
    if (!GLEW_VERSION_2_0) {
        fprintf(stderr, "OpenGL 2.0 not available\n");
        return 1;
    }
      if (!make_resources()) {
        fprintf(stderr, "Failed to load resources\n");
        return 1;
    }

    glutMainLoop();
    return 0;
}

Когда я компилирую, я получаю следующие сообщения

../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXQueryChannelRectSGIX'|
../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXChannelRectSyncSGIX'|
../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXChannelRectSGIX'|
../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXQueryChannelDeltasSGIX'|
../../Libraries/glut-3.7/lib/glut/libglut.so||undefined reference to `glXBindChannelToWindowSGIX'|
||=== Build finished: 5 errors, 0 warnings ===|

Просмотр в Интернете сказал мне, что, возможно, я не включаю нужные библиотеки (предположительно, libX), однако я не уверен, где их найти, если они даже являются правильными для использования. Я уже пытался связать /usr/lib/X86_64-linux-gnu/libX11.so, / usr / lib / X11 не содержит ни библиотечных файлов, ни каталога / lib, и я уверен, что пакет lib11-dev установлен , Что я делаю неправильно?

INFO:
ОС: Linux Mint 11
IDE: Код :: блоки 10.05
После этого учебника. Примечание: я не могу найти каталоги x11r6, на которые он ссылается.

Ответы [ 2 ]

3 голосов
/ 28 июля 2011

убедитесь, что вы установили libglew-dev и freeglut3-dev с помощью

sudo apt-get install libglew-dev freeglut3-dev

и затем свяжитесь с этими библиотеками в вашем файле Makefile или с помощью команды

-lglut -lGLEE

, например

g++ -lglut -lGLEW -o test main.cpp

(вот как я скомпилировал ваш пример)

1 голос
/ 28 июля 2011

В Linux вы не указываете пути к файлам библиотеки для ссылки, а только имена библиотек.Компоновщик знает список путей, которые нужно искать в библиотеках.Также библиотеки содержат ссылки на все остальные библиотеки, которые им требуются.Для компиляции / компоновки программы GLUT обычно достаточно следующей командной строки

gcc -o ${BINARY} ${SOURCE_FILES_OR_OBJECTS} -lglut
...