2013-08-23 1 views
61

я просто переустановил QtCreator, создал новый проект (Qt Application) получил это после компиляции:Qt: не может найти -lGL ошибка

/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' 

(Проект пуст, я did'n совершить любые изменения)

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

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

+0

у вас есть opengl установлен? – lpapp

+0

Возможный дубликат [Android: ошибка libGL.so: невозможно открыть файл общих объектов: нет такого файла или каталога] (http://stackoverflow.com/questions/17417211/android-error-libgl-so-cannot-open-shared -object-file-no-such-file-or-direct) – lpapp

+1

Возможный дубликат [проблема компилятора Qt Creator на Debian] (http://stackoverflow.com/questions/33254272/qt-creator-compiler-issue-on- debian) –

ответ

94

Установите пакет "libgl1-меза-DEV":

sudo apt-get install libgl1-mesa-dev 
+2

Как это правильный ответ? Почему вы должны ссылаться на библиотеку, которая не используется? Не должны ли флаги компоновщика не включать '-lGL'? – Cuadue

+3

@Cuadue: GL в ошибке и в libgl1 -... для OpenGL, фундаментальная зависимость Qt 5.x. Это обычная ошибка для разработчиков при настройке для разработки Qt - но как только они устанавливают библиотеку разработки OpenGL, они больше не видят ее. – pixelgrease

+1

Вы должны использовать apt now – jv110

43

вам не нужно ничего устанавливать. libGL уже установлен с Ubuntu, вам просто нужно софт связать его. (Проверено на Ubuntu 14.x и 15.x, может работать на более поздние версии)

  1. Сначала найдите библиотеку GL
  2. Затем связать его в/USR/Lib
  3. Если библиотека отсутствует, его может быть установлен с помощью пакета libgl1-Меса-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 
+0

Да, это работает. Обычно рекомендуется запускать 'ldconfig' после работы с общими библиотеками, как в этом случае. –

+0

Спасибо за ответ! В моей системе у меня было несколько libGL из-за Android sdk, steam и других приложений. Исходная папка mesa также присутствовала в папке 'i386-linux-gnu'. Для тех, кто читает этот ответ, вы можете легко найти установленную по умолчанию библиотеку в Ubuntu, запустив 'locate libGL | grep mesa', а затем измените последнюю команду 'sudo ln', указанную в этом ответе, с правильным расположением. –

+1

Это работало для меня на Ubuntu 16.10, но я смущен, если теперь использует графический процессор NVidia для рендеринга OpenGL или рендеринг s/w? – DavidJ

-1

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

sudo zypper install --type pattern devel_basis