CMake не удалось найти OpenGL (отсутствует: OPENGL_glx_LIBRARY)

Вопрос или проблема

Я пытаюсь установить 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 за это, так как я тоже был в тупике.

  1. Убедитесь, что у вас есть необходимые файлы .so, и найдите путь к ним
find /usr -name 'libGL.so'
# в моем случае, на raspberry pi я получаю
# /usr/lib/aarch64-linux-gnu/libGL.so
  1. Я полагаю, вы можете либо изменить 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)
  1. Если команда 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 не просматривает по умолчанию. Это часто бывает в случаях, когда используются проприетарные драйверы.

Применение

  1. Проверка наличия библиотек:
    Выполните команду для поиска библиотек:

    find /usr -name 'libGL.so'

    Это поможет убедиться, что библиотеки присутствуют на вашем устройстве. В идеале они должны находиться по пути, похожему на /usr/lib/x86_64-linux-gnu/libGL.so.

  2. Настройка 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, где искать необходимые библиотеки.

  3. Проверка работоспособности OpenGL:
    Запустите следующие команды, чтобы убедиться в корректной работе OpenGL:

    DISPLAY=:0
    glxinfo | grep OpenGL

    Если вывод показывает информацию об OpenGL, значит система работает корректно и проблема находится в неверной конфигурации путей.

Если проблема сохраняется, возможно, необходимо обновить или повторно установить драйверы Nvidia, чтобы они корректно настроили пути к библиотекам OpenGL. Обратите внимание, что могут потребоваться права администратора для произведения этих изменений.

Таким образом, следуя данным рекомендациям, можно устранить большинство проблем, связанных с поиском библиотек OpenGL в среде Ubuntu при помощи CMake.

Оцените материал
Добавить комментарий

Капча загружается...