2013-08-23 15 views
61

po prostu ponownie zainstalować Qt Creator, stworzył nowy projekt (Qt aplikacji) got to po kompilacji:Qt: nie można odnaleźć -lGL błąd

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

(Projekt jest pusty, did'n zobowiązuję wszelkie zmiany)

Qt Creator 2.7.2
oparciu o Qt 5.1.0 (32-bitowy)
Ubuntu 13.04

Jak rozwiązać ten problem?

+0

Czy masz zainstalowany opengl? – lpapp

+0

możliwy duplikat [Android: błąd libGL.so: nie można otworzyć pliku obiektu współdzielonego: brak takiego pliku lub katalogu] (http://stackoverflow.com/questions/17417211/android-error-libgl-so-cannot-open-shared -object-file-no-that-file-or-direct) – lpapp

+1

Możliwy duplikat [problemu kompilatora Qt Creatora na Debianie] (http://stackoverflow.com/questions/33254272/qt-creator-compiler-issue-on- debian) –

Odpowiedz

94

zainstalować pakiet "libgl1-Mesa-dev":

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

Jak to jest poprawna odpowiedź? Dlaczego powinieneś łączyć się z biblioteką, która nie jest używana? Czy flagi łączników nie powinny po prostu zawierać '-lGL'? – Cuadue

+3

@Cuadue: GL w błędzie i w libgl1 -... jest dla OpenGL, fundamentalnej zależności Qt 5.x. Jest to typowy błąd dla programistów podczas konfigurowania rozwoju Qt - ale gdy już zainstalują bibliotekę programowania OpenGL, nigdy już jej nie zobaczą. – pixelgrease

+1

Powinieneś używać apt teraz – jv110

43

nie trzeba niczego instalować. libGL jest już zainstalowany z Ubuntu, wystarczy go delikatnie połączyć. (Testowane na Ubuntu 14.x oraz 15.x, może działać na nowszych wersjach)

  1. Najpierw zlokalizuj biblioteki GL
  2. następnie połączyć je w/usr/lib
  3. Jeśli biblioteka brakuje, to mogą być zainstalowane przez pakiet libgl1-mesa-dev

Oto w jaki sposób można to zrobić:

$ 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

Tak, to działa. Zwykle dobrym pomysłem jest uruchomienie 'ldconfig' po zaadaptowaniu bibliotek współdzielonych, jak w tym przypadku. –

+0

Dzięki za odpowiedź! W moim systemie miałem wiele bibliotek libGL z powodu aplikacji Android sdk, steam i innych. Oryginalny folder mesa był również obecny w folderze 'i386-linux-gnu'. Dla każdego, kto czyta tę odpowiedź, możesz łatwo zlokalizować domyślną zainstalowaną bibliotekę w Ubuntu, uruchamiając 'locate libGL | grep mesa', a następnie zmień ostatnią komendę 'sudo ln' wspomnianą w tej odpowiedzi z właściwą lokalizacją. –

+1

To działało dla mnie na Ubuntu 16.10, ale jestem zdezorientowany, jeśli teraz używa on procesora graficznego NVidia do renderowania OpenGL, lub renderowania s/w? – DavidJ

-1

rozwiązał ten problem Chwileczkę a w suse. Po prostu wykonaj poniższe czynności, a program QTCreator powinien działać poprawnie.

sudo zypper install - typ pattern devel_basis

Powiązane problemy