LibGl ile ilgili sorunlar, fbConfigs, her güncellemede sıyrılmaya ne dersiniz?


38

SFML-projesi derlerken sorun yaşıyorum (grafik görmüyorum):

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

Bu hata, bu kılavuz aracılığıyla nvidia sürücülerinin yeniden yüklenmesi ile çözülebilir: https://askubuntu.com/a/451248/341889

..but yeni güncellemeler aldığımda - bu hata dönüyor; (Ne yapmalıyım? Çözüm değil - sistemin güncellemesini kullanmayın ...

PS ve evet, nvidia-driver'ları yükledikten sonra tüm değişiklikleri kaydettim


1
Ben bir OpenGL yürütülebilir dinamik olarak yükleme mesa başlatmak çalışırsanız bu benim başıma libGL.so: LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogram. Varsayılan olarak, Ubuntu 16.04'üm /usr/lib/nvidia-361/libGL.sonedeniyle kullanıyor /etc/ld.so.conf.d/x86_64-linux-gnu_GL.confve hepsi iyi çalışıyor.
Ciro Santilli 新疆 事件

Yanıtlar:


29

Sorun swrastyazılım oluşturucudur. Bu, grafik kartınız için donanım sürücüsünü bulmadığı anlamına gelir. Bir sürü libGL kütüphanesi kurulmuş ve bu kütüphanelere sembolik bağ bir demet. Bunları görmek için bunu kabuğundan çalıştırın:

find /usr -iname "*libGL.so*" -exec ls -l -- {} + 

Şimdi probleminizin olası nedeni, grafik sürücülerini kurmanın bazen bu sembolik bağlantıları kırmasıdır. (Özellikle /usr/local/lib/libGL.so.1.2.0, yanlış lib'e ya da yanlış linke bir sym linki olması muhtemeldir).

OpenGL programlarının hangi kütüphaneyi çalıştırmaya çalıştığını anlamak için biraz ayrıntılı bir şekilde açabilir ve basit bir OpenGL programı çalıştırabilirsiniz. Bunu standart OpenGL test programını kullanarak doğrulayabilirsiniz:

LIBGL_DEBUG=verbose glxgears

Umarım bu SFML ile aynı şekilde başarısız olur. Bununla beraber LIBGL_DEBUGhangi OpenGL kütüphanesini yüklemeye çalıştığını söylemeliyim. Dahası, yüklemeye çalıştığı lib neredeyse kesinlikle olacaktır /usr/local/lib/libGL.so.1.2.0(Düzenleme: Bu, yanıtladığımda makinemdeki standart OpenGL kitaplığıydı. Şimdi makinenizde başka bir sürüm de olabilir).

Bu yüzden çözüm (bu durumda) /usr/local/lib/libGL.so.1.2.0bunun sağ OpenGL kütüphanesini işaret eden sembolik bir bağlantı olduğundan emin olmaktır . Benim durumumda Nvidia 3.40 sürücüsüne sahibim bu yüzden kaçtım:

ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0

Ancak, sizin için uygun olan OpenGL kitaplığına yönlendirmek isteyeceksiniz (ilk bulma komutunda listelenmiştir).

Özetle: (özel) grafik sürücüleri yüklemek, OpenGL kütüphaneleri için kullanılan sembolik bağlantıları bozabilir. Bu sorunu manuel olarak çözmek için sembolik bağlantıları düzeltin ( /usr/local/lib/libGL.so.1.2.0önce düzeltin ).


Bu sorun hata mesajını anlamama yardımcı oldu, ancak düzeltmedi. "Nvidia sürücülerinin yeniden kurulması" cevabı, benim için sorunu düzelttiği için iyi bir tamamlayıcıydı.
henko

@ Henko evet nvidia sürücüleri yeniden yükleme muhtemelen bunu çözmek için en hızlı ve en kolay yoludur. Hangi nedenle olursa olsun sürücüleri yeniden yüklemek sorununuzu çözmezse ve ellerinizi kirletmeniz gerekiyorsa, bu yaklaşıma geri dönün.
demirli kirpi

6
"Neredeyse kesinlikle / usr/local/lib/libGL.so.1.2.0" olması dışında her bölümü anladım. Mine "libGL: OpenDriver: deniyor / usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so libGL: OpenDriver: deniyor /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so" ve hepsini bu dosya sistemimde mevcut ...
Samuel Li

1
Açıklama için tekrar teşekkürler; Sorun hakkında daha iyi anlıyorum. Ayrıca, benim durumumda, ubuntu swrast.so'da onaylanmış bir hata olduğunu ve insanların bunu tartışmakta olduğunu belirtmek isterim .
Samuel Li

1
Teşekkürler @dementedhedgehog Bu mükemmel bir şekilde ifade edilmiş bir yazıydı ve sorunumu çözmeme yardımcı oldu (bu arada Fedora-25'te). = :). Yukarı-oy kullandı.
NYCeyes

5

Aynı sorunu Ubuntu 16.10'da nvidia-340sürücülerle birlikte yaşadım ve çözümlerin hiçbiri benim için işe yaramadı.

32-bit kütüphanelerin kütüphane yolunda olmadığı ortaya çıktı.

Bu bir astar benim için çalıştı:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib32/nvidia-340"

4

NVIDIA sürücüsünü işaret etmek için doğru bağlantıyı bulmakta sorun yaşıyordum ve benim için işe yarayan başka bir yol buldum.

Bu özetlenmiştir burada .

Ve nVidia sürücüsünün en son sürüm olan 349.16 için geçerli olan PPA üzerinden nasıl kurulacağını listeler.

İlk önce şu anda yüklü olan nVidia sürücülerini bir terminal penceresi ( Ctrl+ ALT+ T) açıp yazarak kaldırın

sudo apt-get remove nvidia*

Sisteminizi yeniden başlatın

Ardından başka bir terminal açın ve aşağıdakileri yazın

sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-349 nvidia-settings
sudo add-apt-repository -r ppa:xorg-edgers/ppa

Sonra yeniden başlat

Simgelerle kaybolduktan sonra denedim ve sürücüyü kurduktan hemen sonra buhar gayet iyi çalıştı ve 400'den fazla sistem güncellemesi yaptıktan sonra yine de çalışıyordu.


2
Sürücü kurulduktan sonra xorg-edgers ppa'yı bırakmanızı önermem. Pek çok dengesiz paket güncelleme olacak.
Pilot6

sadece nvidia'yı kaldırmak * bu sorunu benim için çözdü!
xtofl

3

Adrian'ın cevabına bir alternatif sağlamak için: PPA'da bulunanlar yerine doğrudan NVIDIA kaynaklı özel sürücüleri kullanmayı tercih ediyorsanız, en son özel sürücüyü yüklemek (veya benim durumumda yeniden yüklemek) en son özel sürücüyü kazmaktan kurtulmaya yardımcı olabilir.

Henüz NVIDIA sürücünüz yoksa, sürücüyü NVIDIA'nın web sitesinden indirin . Ardından, tty ( ctrl+ alt+ F1) konumuna geçin ve giriş yöneticinizi kapatın:

Lightdm kullanıyorsanız, $ sudo service lightdm stop

Eğer gdm kullanıyorsanız, $ sudo service gdm stop

İnstall komut dosyasına gidin ve çalıştırın ve istemleri izleyin. Kurulum öncesi betiği başarısız olursa endişelenmeyin. DKMS ve 32 bit uyumluluk kitaplıklarını kaydetmeyi her zaman kabul ediyorum. Sürücü yüklendikten sonra, makinenizi yeniden başlatın:

$ sudo reboot

Daha önce eski bir NVIDIA sürücüsünden bir yükleme komut dosyanız varsa, NVIDIA sürücü yükleme komut dosyasını yukarıda belirtildiği şekilde çalıştırın, ancak "--update" seçeneğiyle:

$ sudo ./NVIDIA-Linux-x86_64-***.**.run --update

Bu size sürücünün en güncel versiyonunu sağlayacaktır.

Bunu yapmak benim libGL error: failed to load driver: swrasthatayı düzeltti .


3

Ubuntu 18'de de aynı problem var. Bu temelde yalnızca 32bit uygulamalar ile oldu. Bu yüzden benim fikrim 32bit nvidia'yı kurmaktı, / usr / lib / i386-linux-gnu / klasörüm şüphesiz boştu.

Çok az denemeden sonra, bu sorun buhar ve şarapla başlamamamı sağladı:

sudo apt install libnvidia-gl-418:i386

(ve hangi sürümüne sahipseniz 418’i değiştirin)

Uygulamaların kurulum sırasındaki eksik bağımlılıklardan şikayet etmemesi ilginçtir.


Bu, soru ile ilgili sorunlarımdan birini
Andrew,

32 bit olmak neden olabilir. Diğer programlar iyi çalışıyor, ancak bunlar muhtemelen 64 bit. Yine de, bu iyi çalışıyor (Yine de sürümü çarpmak zorunda kaldı)
Zoe

2

Kabul etmeliyim ki, bunun neden benim için işe yaradığından emin değilim, ama oldu. Bu özel durumda, bunun gibi yeni bir giriş ekleyerek ld.so.conf.d girişlerini "düzeltme":

sudo ln -s /usr/lib/nvidia-381/ld.so.conf /etc/ld.so.conf.d/nvidia64.conf
sudo ldconfig 

Aşağıdakileri çalıştırıncaya kadar bu mantıklı find:

$ find -L /etc/ld.so.conf.d -type f | xargs grep -i nvidia
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf:/usr/lib32/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib/nvidia-381
/etc/ld.so.conf.d/nvidia64.conf:/usr/lib32/nvidia-381

Neden aynı girişleri üç nüsha eserlere sahip olmakla birlikte iki niçin kopyalamıyor, hiçbir fikrim yok!


Ubunu 17.04 tarihinde benim için çalışıyor. Sadece bir not - yol / usr / lib / nvidia-xxx, burada xxx sürücü numarasıdır, bu nedenle komutu buna uyarlayın.
user2082382

2

İşte bir var aptbenim için çalıştı -sadece çözüm, hiçbir sembolik bağlantılarını veya mucking ld.so.conf.d:

apt install --reinstall libgl1-mesa-glx:i386
apt install mesa-utils nvidia-driver nvidia-driver-libs-i386

1

Sadece bu satırı kullanıyorum:

 sudo rm /usr/lib/i386-linux-gnu/libGL.so.1

ve çalışıyor.

Çünkü ben yürütürken böyle bir giriş görüyorum sudo ldconfig -p | grep -i gl.so:

libwayland-egl.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1
libcogl.so.20 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcogl.so.20
libOpenGL.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so
libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so.1
libEGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so

1
İnsanların bunun ne anlama geldiğini takip etmesi gerekiyor mu?
Andrew,

Benim için çalışıyor, teşekkürler!
Hett,

0

Sadece şunu çalıştır:

sudo apt-get install libnvidia-gl-(the version of your driver):i386

Sürücünüzün sürümü nvidia ayarlarında gösterilmiştir.


-3

Macbook Pro’dan Ubuntu VM’ime ssh gönderdiğimde bu tuhaf sorunla karşılaştım, ancak aşağıdaki Nvidia sürücüsünü Ubuntu 16.04’e yükleyerek bu sorunu çözdüm. Umarım bu sizin için çalışır.

sudo apt-get install nvidia-331 ile


1
Nvidia GPU sürücülerini neden VM konuk sistemine yüklediniz? Ó_ò
David Foerster

Aşağı oy uygun değil. @DavidFoerster, GPU sürücülerini bir VM'ye kurmak hiçbir anlam ifade etmemektedir (GPU donanımını VM'ye aktarmadıkça). Ancak: X'i SSH üzerinden çalıştırıyorum ve aynı sorunla karşı karşıyayım. Uzak makinede (VM) X uygulamalarının başlatılması hemen her zaman OP'nin sorusunda bahsedilen hata mesajlarına yol açar. Ben henüz bu soruna bir çözüm bulamadık ama eğer uzak VY'de GPU sürücüleri yükleyerek ediyorum çözüm olabilir, ben sadece ben (hatalarının ortadan kalkıp emin olmak için, ne olursa olsun mantıklı olmadığına bakılmaksızın, yapardım şu anda onları yok sayarak).
Binarus
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.