Qt: не вдалося знайти -lGL помилку


109

Я щойно перевстановив QtCreator, створив новий проект ( додаток Qt ) і отримав це після компіляції:

/usr/bin/ld: **cannot find -lGL**
collect2: error: ld returned 1 exit status
make: *** [untitled1] Error 1
18:07:41: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit)
When executing step 'Make'

( Проект порожній, я не вносив жодних змін )

Qt Creator 2.7.2
На основі Qt 5.1.0 (32 біт)
Ubuntu 13.04

Як вирішити цю проблему?


у вас встановлений opengl?
lpapp


1
Можливий дублікат випуску компілятора Qt Creator на Debian

Відповіді:


157

Вам слід встановити пакет "libgl1-mesa-dev":

sudo apt install libgl1-mesa-dev

6
Як це правильна відповідь? Чому слід посилатися на те, що бібліотека не використовується? Чи не повинні прапорщики просто не містити -lGL?
Куадуе

6
@Cuadue: GL в помилці і в libgl1 -... - це для OpenGL - фундаментальної залежності Qt 5.x. Це поширена помилка для розробників при налаштуванні на розробку Qt - але, коли вони встановлюють вікно розробки OpenGL, вони більше ніколи не побачать її.
pixelgrease

Ubuntu 20.04 поставляється з необхідними бібліотеками OpenGL, то немає необхідності встановлювати будь - які пакети, вам просто потрібно використовувати , lnщоб створити посилання в / USR / Lib см відповіді Дестан в , то 20,04 пакета , здається, не має нічого корисного в ньому.
jrh

75

вам не потрібно нічого встановлювати. libGLвже встановлено з Ubuntu, вам просто потрібно м'яке посилання. (тестовано на ubuntu 14.x та 15.x, може працювати для більш пізніх версій)

  1. Спочатку знайдіть бібліотеку GL
  2. Потім зв’яжіть його під / usr / lib
  3. Якщо бібліотека відсутня, її можна встановити за допомогою пакета libgl1-mesa-dev

Ось як ви могли це зробити:

$ locate libGL
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLU.so.1
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2.0.0
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so

1
Так, це працює. Зазвичай корисно запускатися ldconfigпісля роботи з спільними бібліотеками, як у цьому випадку.
Жозе Томаш Точіно

Дякую за відповідь! У моїй системі у мене було кілька libGL через Android sdk, steam та інших програм. Оригінальна папка mesa також була присутня в i386-linux-gnuпапці. Для всіх, хто читає цю відповідь, ви можете легко знайти встановлену за замовчуванням бібліотеку в Ubuntu, запустивши locate libGL | grep mesaта змінивши останню sudo lnкоманду, згадану в цій відповіді, на потрібне місце.
Акаш Агарвал

1
Це працювало для мене на Ubuntu 16.10, але я розгублений, якщо він зараз використовує NVidia GPU для візуалізації OpenGL або як / w рендерінг?
DavidJ

Ця відповідь, здається, не вирішує питання про налаштування pkg, чи не так? IE: якщо у вас встановлені лінії для створення qt для використання pkg-config --libs, це рішення все одно нічого не поверне для GL? Щоб бути на безпеці, я просто встановив mesa-dev.
Алекс Саммерс

3
Ви, сер, заслуговуєте на печиво не того чоловіка, який був великим галочкою
djangodude

3

Модуль gui Qt включений за замовчуванням . Якщо ви не хочете використовувати його в проекті (наприклад, це бібліотека або використовує лише stdio), вам потрібно вказати це у файлі .pro.

QT -= gui

І лінкер не намагатиметься знайти lGL незалежно від того, встановлений він.

Моя справа, мабуть, трохи дивна, оскільки головна причина використання Qt - це створення Gui. Встановити бібліотеку GL, звичайно, не складно, я просто хотів знати, чому цього хотів мій швидкий і брудний Hello World.




1

Моя система - Ubuntu 16.04 на комп'ютері x86 (з NVIDIA GeForce GPU).

Перевірте файли бібліотеки, розташовані в /usr/lib/x86_64-linux-gnu

ls -al /usr/lib/x86_64-linux-gnu/libG*

Якщо ви бачите зламане посилання, перевстановіть libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

І, перевірте бібліотеку.


0

У моєму випадку: я встановив QT 32-бітну лібу в Win10 64 біт, і вона зіткнулася з помилкою, я змінюю всі 64-бітні і QT-творець працює безперебійно.


-1

Вирішив цю проблему лише хвилину тому в suse. Просто виконайте наступний крок нижче, і QTCreator повинен працювати чудово.

sudo zypper install - тип шаблону devel_basis

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.