Qt: nie można znaleźć błędu -lGL


109

Właśnie ponownie zainstalowałem QtCreator, utworzyłem nowy projekt ( aplikację Qt ) i otrzymałem to po kompilacji:

/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, nie dokonałem żadnych zmian )

Qt Creator 2.7.2
Oparty na Qt 5.1.0 (32 bit)
Ubuntu 13.04

Jak rozwiązać ten problem?


czy masz zainstalowany opengl?
lpapp


Odpowiedzi:


157

Powinieneś zainstalować pakiet „libgl1-mesa-dev”:

sudo apt install libgl1-mesa-dev

6
Jak to jest poprawna odpowiedź? Dlaczego powinieneś linkować, aby biblioteka nie była używana? Czy flagi konsolidatora nie powinny po prostu zawierać -lGL?
Cuadue

6
@Cuadue: GL w błędzie i libgl1 -... jest dla OpenGL, podstawowa zależność Qt 5.x. Jest to częsty błąd deweloperów podczas konfigurowania do programowania Qt - ale po zainstalowaniu biblioteki programistycznej OpenGL nigdy więcej jej nie zobaczą.
pixelgrease

Ubuntu 20.04 jest dostarczany z wymaganymi bibliotekami OpenGL, nie jest konieczne instalowanie żadnych pakietów, wystarczy użyć lndo utworzenia łącza w / usr / lib, zobacz odpowiedź destana , pakiet 20.04 nie wydaje się mieć w nim nic przydatnego.
jrh

75

nie musisz niczego instalować. libGLjest już zainstalowany z Ubuntu, wystarczy go miękko połączyć. (testowane dla ubuntu 14.x i 15.x, może działać z nowszymi wersjami)

  1. Najpierw zlokalizuj bibliotekę GL
  2. Następnie połącz go w / usr / lib
  3. Jeśli brakuje biblioteki, można ją zainstalować za pomocą pakietu libgl1-mesa-dev

Oto, jak możesz 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

1
Tak, to działa. Zwykle dobrym pomysłem jest uruchomienie ldconfigpo zajęciu się bibliotekami współdzielonymi, jak w tym przypadku.
José Tomás Tocino

Dziękuję za odpowiedź! W moim systemie miałem wiele libGL ze względu na Android SDK, Steam i inne aplikacje. Oryginalny folder mesa był również obecny w i386-linux-gnufolderze. Każdy, kto czyta tę odpowiedź, może łatwo zlokalizować domyślną zainstalowaną bibliotekę w systemie Ubuntu, uruchamiając, locate libGL | grep mesaa następnie zmieniając ostatnie sudo lnpolecenie wymienione w tej odpowiedzi z odpowiednią lokalizacją.
Akash Agarwal

1
To działało dla mnie na Ubuntu 16.10, ale jestem zdezorientowany, jeśli teraz używa GPU NVidia do renderowania OpenGL, czy jako renderer / w?
DavidJ,

Wydaje się, że ta odpowiedź nie rozwiązuje pytania pkg-config, prawda? IE: jeśli masz linie budowania qt skonfigurowane do używania pkg-config --libs, to rozwiązanie nadal nie zwraca niczego dla GL? Aby być bezpiecznym, po prostu zainstalowałem mesa-dev.
Alex Summers

3
Ty Panie, zasługujesz na ciastko, a nie oszust, który był wielkim kleszczem
djangodude

3

Moduł gui Qt jest dołączony domyślnie . Jeśli nie chcesz go używać w projekcie (np. Jest to biblioteka lub używa tylko stdio), musisz to określić w pliku .pro.

QT -= gui

Konsolidator nie będzie próbował znaleźć lGL, niezależnie od tego, czy jest zainstalowany.

Mój przypadek jest co prawda trochę dziwny, ponieważ głównym powodem używania Qt jest tworzenie GUI. Instalacja biblioteki GL z pewnością nie jest trudna, chciałem tylko wiedzieć, dlaczego mój szybki i brudny Hello World chciał tego.


2

pisać:

yum provides */libGL.so 

po dostarczeniu:

yum install mesa-libGL-devel mesa-libGLU-devel


1

Mój system to Ubuntu 16.04 na komputerze x86 (z procesorem graficznym NVIDIA GeForce).

Sprawdź pliki biblioteki znajdujące się w /usr/lib/x86_64-linux-gnu

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

Jeśli widzisz uszkodzony link, zainstaluj ponownie libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

I ponownie sprawdź bibliotekę.


0

W moim przypadku: Zainstalowałem 32-bitową bibliotekę QT w 64-bitowym systemie Win10 i wystąpił błąd, przełączam na wszystkie wersje 64-bitowe, a kreator QT działa płynnie.


-1

Rozwiązałem ten problem zaledwie minutę temu w suse. Po prostu wykonaj poniższy krok, a QTCreator powinien działać dobrze.

sudo zypper install --type pattern devel_basis

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.