Вопрос или проблема
Я пытаюсь установить freeglut-3.0.0, скачанный в виде исходного кода с sourceforge.
Когда я набираю cmake .
, появляется ошибка Could not find OpenGL (missing: OPENGL_glx_LIBRARY)
Так как существует множество вопросов и ответов на данную проблему на stackoverflow, askubuntu и github, я попробовал предложения из этих вопросов (здесь, здесь, здесь, здесь, здесь, здесь и многих других…) и когда я устанавливаю любой пакет, следуя предложениям, то всегда получаю package_name is already the newest version
, но проблема остается.
Во многих предложениях и ответах упоминается, что эти библиотеки уже установлены драйвером Nvidia, и, похоже, эти библиотеки установлены на моем ПК, но Cmake не может их найти.
Конфигурация моего ПК:
- Ubuntu 18.04
- Драйвер Nvidia 440.100
Возможно, мой вопрос кажется копией многих других, но я не могу найти решение своей проблемы.
Ищу какие-либо добрые советы.
Вы, на самом деле, можете частично поблагодарить ChatGPT за это, так как я тоже был в тупике.
- Убедитесь, что у вас есть необходимые файлы .so, и найдите путь к ним
find /usr -name 'libGL.so'
# в моем случае, на raspberry pi я получаю
# /usr/lib/aarch64-linux-gnu/libGL.so
- Я полагаю, вы можете либо изменить
CMakeLists.txt
, либо изменить аргументы командной строки для cmake.Если вы редактируете cmake, добавьте эти две строки где-то наверху.
ПРИМЕЧАНИЕ: здесь имена переменных немного отличаются от сообщения об ошибке (но это все равно решает проблему, по крайней мере, у меня)
set(OPENGL_gl_LIBRARY /usr/lib/x86_64-linux-gnu/libGL.so)
set(OPENGL_glx_LIBRARY /usr/lib/x86_64-linux-gnu/libGLX.so)
- Если команда cmake все еще не работает, вы можете попробовать следующую проверку.
Если вы используетеssh
, сначала переподключитесь, используя
ssh -X blah_address
# чтобы активировать дисплеи
Затем (независимо от того, используете ли вы ssh или нет) выполните
DISPLAY=:0
glxinfo | grep OpenGL
Вывод должен выглядеть примерно так:
OpenGL vendor string: Broadcom
OpenGL renderer string: VC4 V3D 2.1
OpenGL version string: 2.1 Mesa 22.2.5
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 22.2.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
Если это не так, это значит, что, вероятно, возникла проблема с самим OpenGL, и это отдельный вопрос, который надо решать.
Ответ или решение
Для решения проблемы, связанной с ошибкой "CMake could not find OpenGL (missing: OPENGL_glx_LIBRARY)" при установке freeglut-3.0.0, необходимо произвести несколько действий. Описанная вами ситуация часто возникает при компиляции программных продуктов, требующих зависимости от OpenGL, особенно в среде Linux. Рассмотрим теоретические аспекты, конкретные примеры и практическое применение решений.
Теория
Когда CMake не может найти библиотеку OpenGL, это обычно связано с тем, что необходимые динамические библиотеки (*.so файлы) не находятся в обычных путях поиска. Это может произойти по нескольким причинам: библиотеки установлены в нестандартных директориях, отсутствуют символические ссылки, или CMake неверно интерпретирует конфигурационные файлы.
Пример
Ваша проблема в частности может быть связана с тем, что хотя драйверы Nvidia и устанавливают библиотеки OpenGL, они могут быть установлены в директории, которую CMake не просматривает по умолчанию. Это часто бывает в случаях, когда используются проприетарные драйверы.
Применение
-
Проверка наличия библиотек:
Выполните команду для поиска библиотек:find /usr -name 'libGL.so'
Это поможет убедиться, что библиотеки присутствуют на вашем устройстве. В идеале они должны находиться по пути, похожему на
/usr/lib/x86_64-linux-gnu/libGL.so
. -
Настройка CMakeLists.txt:
Если библиотеки найдены, но CMake не обнаруживает их, возможно, потребуется указать точные пути вручную. В файлеCMakeLists.txt
добавьте следующие строки:set(OPENGL_gl_LIBRARY /usr/lib/x86_64-linux-gnu/libGL.so) set(OPENGL_glx_LIBRARY /usr/lib/x86_64-linux-gnu/libGLX.so)
Это помогает принудительно указать CMake, где искать необходимые библиотеки.
-
Проверка работоспособности OpenGL:
Запустите следующие команды, чтобы убедиться в корректной работе OpenGL:DISPLAY=:0 glxinfo | grep OpenGL
Если вывод показывает информацию об OpenGL, значит система работает корректно и проблема находится в неверной конфигурации путей.
Если проблема сохраняется, возможно, необходимо обновить или повторно установить драйверы Nvidia, чтобы они корректно настроили пути к библиотекам OpenGL. Обратите внимание, что могут потребоваться права администратора для произведения этих изменений.
Таким образом, следуя данным рекомендациям, можно устранить большинство проблем, связанных с поиском библиотек OpenGL в среде Ubuntu при помощи CMake.