Qt: -lGL hatası bulunamıyor


109

QtCreator'ı yeni yükledim, yeni proje ( Qt Uygulaması ) oluşturdum ve derlemeden sonra bunu aldım:

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

( Proje boş, herhangi bir değişiklik yapmadım )

Qt Creator 2.7.2
Qt 5.1.0 (32 bit)
Ubuntu 13.04'e göre

Bu sorunu nasıl çözerim?


kurulu opengl var mı?
lpapp

olası Android
lpapp

Yanıtlar:


157

"Libgl1-mesa-dev" paketini kurmalısınız:

sudo apt install libgl1-mesa-dev

6
Bu nasıl doğru cevap? Neden kullanılmayan bir kitaplığa bağlantı vermelisiniz? Bağlayıcı bayrakları basitçe içermemeli -lGLmi?
Cuadue

6
@Cuadue: Hatadaki ve libgl1 -...'deki GL, Qt 5.x'in temel bağımlılığı olan OpenGL içindir. Bu, geliştiriciler için Qt geliştirmeye hazırlanırken yaygın bir hatadır - ancak OpenGL geliştirme kitaplığını yüklediklerinde onu bir daha asla görmezler.
pixelgrease

Ubuntu 20.04, gerekli OpenGL kitaplıkları ile birlikte gelir, herhangi bir paket kurmanız gerekmez, sadece ln/ usr / lib içinde bir bağlantı oluşturmak için kullanmanız gerekir , destan'ın cevabına bakın , 20.04 paketinde yararlı bir şey yok gibi görünüyor.
JRH

75

hiçbir şey yüklemenize gerek yoktur. libGLUbuntu ile zaten kurulmuşsa, sadece yumuşak bağlamanız gerekir. (ubuntu 14.x ve 15.x için test edilmiştir, sonraki sürümler için çalışabilir)

  1. Önce GL kitaplığını bulun
  2. Sonra / usr / lib altına bağlayın
  3. Kitaplık eksikse, libgl1-mesa-dev paketi aracılığıyla kurulabilir

Bunu şu şekilde yapabilirsiniz:

$ 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
Evet, bu çalışıyor. ldconfigBu durumda olduğu gibi paylaşılan kütüphanelerle uğraştıktan sonra çalıştırmak genellikle iyi bir fikirdir .
José Tomás Tocino

Cevap için teşekkürler! Sistemimde Android sdk, steam ve diğer uygulamalar nedeniyle birden fazla libGL vardı. Orijinal mesa klasörü de i386-linux-gnuklasörde mevcuttu. Bu yanıtı okuyan herkes için, Ubuntu'daki varsayılan yüklü kitaplığı çalıştırarak kolayca bulabilir locate libGL | grep mesave ardından sudo lnbu yanıtta belirtilen son komutu doğru konumla değiştirebilirsiniz.
Akash Agarwal

1
Bu benim için Ubuntu 16.10'da çalıştı, ancak şimdi OpenGL işleme için NVidia GPU'yu veya / w oluşturucu kullanıyorsa kafam karıştı mı?
DavidJ

Bu cevap, pkg-config sorusunu çözmüyor, değil mi? IE: pkg-config --libs kullanmak için qt derleme satırlarınız varsa, bu çözüm yine de GL için hiçbir şey döndürmeyecek mi? Güvenli tarafta olmak için, basitçe mesa-dev'i kurdum.
Alex Summers

3
Siz efendim, büyük tik olan dolandırıcıyı değil kurabiyeyi hak
ediyorsunuz

3

Gui Qt modülü varsayılan olarak dahildir . Bir projede kullanmak istemiyorsanız (örneğin, bir kitaplıksa veya sadece stdio kullanıyorsa), bunu .pro dosyasında belirtmeniz gerekir.

QT -= gui

Ve bağlayıcı, kurulu olup olmadığına bakılmaksızın lGL'yi bulmaya çalışmayacaktır.

Benim durumum kuşkusuz biraz tuhaf, çünkü Qt kullanmanın ana nedeni, GUi'leri yaratmak. GL kütüphanesini kurmak kesinlikle zor değil, sadece hızlı ve kirli Hello World'ümün neden bunu istediğini bilmek istedim.


2

yazmak:

yum provides */libGL.so 

sağladıktan sonra:

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


1

Sistemim x86 bilgisayarda (NVIDIA GeForce GPU ile) Ubuntu 16.04'tür.

İçinde bulunan kitaplık dosyalarını kontrol edin /usr/lib/x86_64-linux-gnu

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

Bozuk bağlantıyı görürseniz yeniden yükleyin libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

Ve kitaplığı yeniden kontrol edin.


0

Benim durumumda: Win10 64 bit'e QT 32 bit lib yükledim ve hata ile karşılaştı, tüm 64 bit'e geçiyorum ve QT oluşturucu sorunsuz çalışıyor.


-1

Bu sorunu bir dakika önce suse'de çözdüm. Aşağıdaki adımı uygulamanız yeterlidir ve QTCreator gayet iyi çalışacaktır.

sudo zypper install --type pattern devel_basis

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.