The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Программирование с glut"
Отправлено likenix, 17-Дек-08 14:59 
Я программирую под Linux Fedora

Основная проблема не компилится программа!

Были установлены пакеты freeglut.
Снес установил glut, потому как не находились функции glut.
снес freeglut, потому что был конфликт библиотек.

Установлены пакеты.
http://redhat-archive.osmirror.nl/9/en/os/i386/RedHat/RPMS/g...
http://redhat-archive.osmirror.nl/9/en/os/i386/RedHat/RPMS/g...

Компилирую след образом
[code=cpp]
gcc torus.c -o torus -lGLU -lGL -lX11 -lglut -lm

Получаю
[code=cpp]
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.so: undefined reference to `XFreeDeviceList'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.so: undefined reference to `XListInputDevices'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.so: undefined reference to `XSelectExtensionEvent'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.so: undefined reference to `XOpenDevice'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.so: undefined reference to `XmuLookupStandardColormap'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.so: undefined reference to `XQueryDeviceState'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.so: undefined reference to `XGetExtensionVersion'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libglut.so: undefined reference to `XFreeDeviceState'

Я догадываюсь, что это функции Xlib, но у меня вроде библиотека X11 подключена но почемут-то они ищатся в  libglut.so

Вопроса всего два
1 Как скомпилировать эту программу?
2 Можно было бы скомпилировать программу с freeglut?

Вот код, который хочу скомпилить

[code=cpp]
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

#define PI_ 3.14159265358979323846

GLuint theTorus;

/* Draw a torus */
static void torus(int numc, int numt)
{
   int i, j, k;
   double s, t, x, y, z, twopi;

   twopi = 2 * PI_;
   for (i = 0; i < numc; i++) {
      glBegin(GL_QUAD_STRIP);
      for (j = 0; j <= numt; j++) {
         for (k = 1; k >= 0; k--) {
            s = (i + k) % numc + 0.5;
            t = j % numt;

            x = (1+.1*cos(s*twopi/numc))*cos(t*twopi/numt);
            y = (1+.1*cos(s*twopi/numc))*sin(t*twopi/numt);
            z = .1 * sin(s * twopi / numc);
            glVertex3f(x, y, z);
         }
      }
      glEnd();
   }
}

/* Create display list with Torus and initialize state */
static void init(void)
{
   theTorus = glGenLists (1);
   glNewList(theTorus, GL_COMPILE);
   torus(8, 25);
   glEndList();

   glShadeModel(GL_FLAT);
   glClearColor(0.0, 0.0, 0.0, 0.0);
}

/* Clear window and draw torus */
void display(void)
{
   glClear(GL_COLOR_BUFFER_BIT);
   glColor3f (1.0, 1.0, 1.0);
   glCallList(theTorus);
   glFlush();
}

/* Handle window resize */
void reshape(int w, int h)
{
   glViewport(0, 0, (GLsizei) w, (GLsizei) h);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   gluPerspective(30, (GLfloat) w/(GLfloat) h, 1.0, 100.0);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
}

/* Rotate about x-axis when "x" typed; rotate about y-axis
   when "y" typed; "i" returns torus to original view */
void keyboard(unsigned char key, int x, int y)
{
   switch (key) {
   case 'x':
   case 'X':
      glRotatef(30.,1.0,0.0,0.0);
      glutPostRedisplay();
      break;
   case 'y':
   case 'Y':
      glRotatef(30.,0.0,1.0,0.0);
      glutPostRedisplay();
      break;
   case 'i':
   case 'I':
      glLoadIdentity();
      gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
      glutPostRedisplay();
      break;
   case 27:
      exit(0);
      break;
   }
}

int main(int argc, char **argv)
{
   glutInitWindowSize(200, 200);
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
   glutCreateWindow(argv[0]);
   init();
   glutReshapeFunc(reshape);
   glutKeyboardFunc(keyboard);
   glutDisplayFunc(display);
   glutMainLoop();
   return 0;
}


 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, [email protected] (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру