Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 2
Регистрация: 27.04.2015
Сообщений: 349
1

Параметры компилятора при работе с openGL

21.02.2018, 21:47. Показов 1504. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую. Раньше работал на студии в винде, но с недавних пор перешёл на линукс. В общем, как работать с компилятором и какие файлы прописывать в параметры при компиляции программы я понимаю. Но вот с граф. библиотекой возникли вопросы. Дело в том, что нужные библиотеки подключаются инклудами в самом начале. Вопрос: зачем в параметры компилятора добавлять
Bash
1
-lglut -lGL -lGLU
И почему без этого программа не компилится?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2018, 21:47
Ответы с готовыми решениями:

Ошибка компилятора при работе с fstream
Опыта с ним мало, работал всё время c freopen. Но тут нельзя им. Короче простейшая прога: есть...

Ошибка компилятора Cs1061 при работе с Excel
Пытаюсь проверить содержимое каждой ячейки столбца на совпадение с переменной do // ищем источник...

Ошибка при работе с OpenGL
void openGL :: paintGL() { glClear(GL_COLOR_BUFFER_BIT); } выдает ошибку...

Проблемы при работе с openGl
Здравствуйте. я создал проект, сделал все как было написано у вас на...

10
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
21.02.2018, 23:41 2
Цитата Сообщение от Tankist 90 Посмотреть сообщение
Дело в том, что нужные библиотеки подключаются инклудами в самом начале.
Инклудами подключаются хедеры, в которых описано, какие именно функции существуют и какие им передаются аргументы. А сам код этих функций находится в библиотеках, которые нужно линковать. Ключ -l как раз указывает, какую библиотеку нужно прилинковать к вашему проекту.
0
0 / 0 / 2
Регистрация: 27.04.2015
Сообщений: 349
22.02.2018, 00:04  [ТС] 3
Цитата Сообщение от Humanoid Посмотреть сообщение
какую библиотеку нужно прилинковать
А по какому пути находятся эти библиотеки?
0
342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
22.02.2018, 18:34 4
Дайте команду
Bash
1
/sbin/ldconfig -p | grep libglut
и увидите.
0
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
23.02.2018, 12:34 5
Дополнительные пути можно указывать через ключ -L
Например,
Bash
1
gcc main.o somefiles.o -L/home/user/mydir -lmylib -o myprog
При этом линковщик будет искать библиотеку libmylib ещё и в папке /home/user/mydir
0
342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
23.02.2018, 16:44 6
Humanoid, Я недавно пытался так сделать, но потребовалось ещё установить локальную LD_LIBRARY_PATH.
Я так и не добился того, чтобы ld читал локальный ld.so.cache.
0
0 / 0 / 2
Регистрация: 27.04.2015
Сообщений: 349
12.03.2018, 11:16  [ТС] 7
Цитата Сообщение от peter_irich Посмотреть сообщение
Дайте команду
Нет там таких библиотек, есть только: libglut.so.3 и libglut.so
lglut, lGL, lGLU я нигде не нашёл...

Откуда линковщик вообще берёт библиотеки?

Добавлено через 11 часов 7 минут
И всё-таки..?
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
12.03.2018, 13:05 8
Цитата Сообщение от Tankist 90 Посмотреть сообщение
Нет там таких библиотек, есть только: libglut.so.3 и libglut.so
lglut, lGL, lGLU я нигде не нашёл...
libglut.so.3 - собственно исполняемый файл библиотеки glut (аналог dll-файла в винде, только тут важно не только расширение-суффикс, но и префикс). А "-lglut" - это команда для линковщика. Пара символов "-l" означает "подключить библиотеку", остальное - собственно название библиотеки.
0
0 / 0 / 2
Регистрация: 27.04.2015
Сообщений: 349
12.03.2018, 16:02  [ТС] 9
Цитата Сообщение от TRam_ Посмотреть сообщение
libglut.so.3 - собственно исполняемый файл библиотеки glut
Т.е. когда я указываю линковщику подключить к проекту библиотеки glut, GL, GLU он вызывает libglut.so?

Я почему так рьяно ищу эти файлы: не люблю когда не понимаю. В винде оно как-то проще было, можно пути к библиотекам указать в самой IDE и не париться, или просто кидать эти файлы в папку с проектом. А в линуксе... компилятор и линковщик откуда-то знают где и какие файлы брать, а я нет. Непорядок...
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
12.03.2018, 16:31 10
Цитата Сообщение от Tankist 90 Посмотреть сообщение
он вызывает
то он подключает функции, скомпилированные в libglut.so . Вызов происходит при запуске приложения, т.к. это динамическая библиотека.
Цитата Сообщение от Tankist 90 Посмотреть сообщение
откуда-то знают где и какие файлы брать, а я нет
Посмотри содержимое переменной окружения LD_LIBRARY_PATH. По всем путям, которые там указаны, линковщик будет искать эти библиотеки. Если их там нет, то ничего он не найдёт. Чтобы отдельно указать линковщику, где ещё ему разрешается искать библиотеки для линковки, используется команда "-L" . То есть как в примере выше -L/home/user/mydir означает, что нужно поискать требуемые библиотеки и в директории /home/user/mydir

Добавлено через 3 минуты
+ https://losst.ru/biblioteki-ub... 1074_Linux
1
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,883
14.03.2018, 01:44 11
Лучший ответ Сообщение было отмечено Tankist 90 как решение

Решение

Цитата Сообщение от Tankist 90 Посмотреть сообщение
Нет там таких библиотек, есть только: libglut.so.3 и libglut.so
Особенность линкера в том что по флагу -lX он ищет библиотеки libX.a и libX.so Возможно, придется доустановить пакеты libgl-mesa-dev или что-то в этом роде
1
14.03.2018, 01:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2018, 01:44
Помогаю со студенческими работами здесь

При работе с OpenGl ошибка
Ошибка 13 error LNK2019: ссылка на неразрешенный внешний символ __imp__glClearColor@16 в функции...

Ошибки компиляции при работе с OpenGL
Какую библиотеку нужно подключить и что нужно сделать, чтобы заработало: 1>------ Построение...

Неразрешенный символ при работе с OpenGL
Только начал изучать oprngl, но уже неделю борюсь проблемой - в любом примере программы, код...

Какие параметры нужно передать в функцию opengl при ее вызове, что бы код заработал?
Добрый день. Имеется код: #include <GL/glut.h> #include <iostream> int opengl(int, char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru