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

Как мне решить эту проблему?

Hofmn
источник

Ответы:

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 для рендеринга OpenGL или как рендерер / w?
DavidJ
Этот ответ, похоже, не решает вопрос о pkg-config, не так ли? IE: если у вас есть строки сборки qt, настроенные для использования pkg-config --libs, это решение все равно ничего не вернет для GL? На всякий случай я просто установил файл mesa-dev.
Alex Summers
3
Вы, сэр, заслуживаете печенья, а не мошенник, который был большим тиком
djangodude
3

Модуль gui Qt включен по умолчанию . Если вы не хотите использовать его в проекте (например, это библиотека или использует только stdio), вам необходимо указать это в файле .pro.

QT -= gui

И компоновщик не будет пытаться найти lGL независимо от того, установлен ли он.

По общему признанию, мой случай немного странный, поскольку основная причина использования Qt - это создание графического интерфейса. Установить библиотеку GL, конечно, не сложно, я просто хотел знать, зачем она нужна моему быстрому и грязному Hello World.

пищалка
источник
2

записывать:

yum provides */libGL.so 

после предоставления:

yum install mesa-libGL-devel mesa-libGLU-devel
Шоджиб Махмуд
источник
2

Это сработало для меня:

sudo ln -s /usr/lib/libEGL1.so /usr/lib/libGL.so
Себастьян Карлссон
источник
1

Моя система - Ubuntu 16.04 на компьютере x86 (с графическим процессором NVIDIA GeForce).

Проверьте файлы библиотеки, расположенные в /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

В моем случае: я установил 32-разрядную библиотеку QT в 64-разрядную версию Win10, и она столкнулась с ошибкой, я перехожу на все 64-разрядные версии, и создатель QT работает плавно.

nobjta_9x_tq
источник
-1

Решил эту проблему буквально минуту назад в suse. Просто выполните следующий шаг, и QTCreator должен работать нормально.

sudo zypper install --type pattern devel_basis

Аноним Суоминона
источник