#c #gcc #linker-errors
#c #gcc #ошибки компоновщика
Вопрос:
Я компилирую пример программы, которая использует opengl в ubuntu (linux). Короткий фрагмент кода выглядит следующим образом:
#include <stdlib.h>
#include <GL/glut.h>
void createBox( GLfloat centroX, GLfloat centroY,
GLfloat corR, GLfloat corG, GLfloat corB )
{
/* Cor */
glColor3f( corR, corG, corB );
Я установил все пакеты для разработки в opengl (в ubuntu), а именно:
freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa
libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev
Я компилирую пример следующим образом:
gcc -lGL CG_ex04.c -o main
и я получаю следующее
/tmp/ccDWmJDZ.o: In function `createBox':
CG_ex04.c:(.text 0x31): undefined reference to `glColor3f'
и другие ошибки в той же строке.
Кто-нибудь знает, что я делаю неправильно?
Заранее благодарю за любую помощь.
Комментарии:
1. Это напрямую связано с вашим компилятором, а не с используемой вами библиотекой. Пожалуйста, удалите теги opengl и glut 🙂
2. Исправлены теги и заголовок. Пожалуйста, помните об этом в следующий раз, когда будете публиковать вопрос. Теги должны быть релевантны вашей проблеме , а не использоваться только потому, что ваша программа использует определенный API.
Ответ №1:
Попробуйте gcc -o main CG_ex4.c -lGL
. Важен правильный порядок параметров gcc.
Комментарии:
1. черт возьми, вот и все, хотя сначала это не сработало, мне все еще приходилось добавлять ‘-lglut’ в командную строку, но теперь это работает как по волшебству. Большое спасибо!
Ответ №2:
Попробуйте включить GL / gl.h, а также glut. Хотя это немного странно, поскольку glut фактически включает в себя как gl.h, так и glu.h.