มีปัญหากับ libGl, fbConfigs, ความคมชัดผ่านการอัพเดทแต่ละครั้งหรือไม่?


38

ฉันมีปัญหาเมื่อคอมไพล์ SFML-project (ไม่เห็นกราฟิก):

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

ข้อผิดพลาดนี้สามารถแก้ไขได้โดยการติดตั้งไดรเวอร์ nvidia อย่างง่าย ๆ ผ่านบทช่วยสอนนี้: https://askubuntu.com/a/451248/341889

.. แต่เมื่อฉันได้รับการปรับปรุงใหม่ - ข้อผิดพลาดนี้จะกลับมา (ฉันควรทำอย่างไรมันไม่ใช่วิธีแก้ปัญหา - ไม่ใช้การอัปเดตระบบ ...

ป.ล. และใช่ฉันบันทึกการเปลี่ยนแปลงทั้งหมดหลังจากติดตั้งไดรเวอร์ nvidia


1
นี้เกิดขึ้นกับฉันว่าฉันพยายามที่จะเปิดตัว OpenGL โหลดแบบไดนามิกปฏิบัติการเมซ่า:libGL.so LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa ./glprogramโดยค่าเริ่มต้น Ubuntu 16.04 ของฉันใช้/usr/lib/nvidia-361/libGL.soเพราะ/etc/ld.so.conf.d/x86_64-linux-gnu_GL.confและมันก็ใช้ได้ดี
Ciro Santilli 事件改造中心法轮功六四事件

คำตอบ:


29

swrastสิ่งที่เป็น renderer ซอฟแวร์ นั่นหมายความว่าไม่ได้หาไดรเวอร์ฮาร์ดแวร์สำหรับกราฟิกการ์ดของคุณ มีไลบรารี libGL จำนวนมากที่ติดตั้งและลิงก์สัญลักษณ์มากมายไปยังไลบรารีเหล่านั้น เพื่อดูสิ่งเหล่านี้เรียกใช้จากเปลือก:

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

ตอนนี้สาเหตุที่เป็นไปได้ของปัญหาของคุณคือบางครั้งการติดตั้งไดรเวอร์กราฟิกแบ่งลิงค์สัญลักษณ์เหล่านี้ (โดยเฉพาะอย่างยิ่ง/usr/local/lib/libGL.so.1.2.0น่าจะเป็น lib ผิดหรือลิงค์ sym ไปยังลิงค์ผิด)

ในการหาว่าไลบรารี่โปรแกรมใดบ้างที่พยายามใช้งานโปรแกรม OpenGL คุณสามารถเปิดการใช้คำฟุ่มเฟื่อยและเรียกใช้โปรแกรม OpenGL แบบง่าย ๆ คุณสามารถตรวจสอบสิ่งนี้ได้โดยใช้โปรแกรมทดสอบ OpenGL มาตรฐาน:

LIBGL_DEBUG=verbose glxgears

หวังว่าจะล้มเหลวในลักษณะเดียวกับ SFML ด้วยLIBGL_DEBUGมันควรจะบอกคุณว่าห้องสมุด OpenGL กำลังพยายามโหลด นอกจากนี้ lib ที่จะพยายามโหลดนั้นเกือบจะแน่นอน/usr/local/lib/libGL.so.1.2.0(แก้ไข: นี่คือไลบรารี OpenGL มาตรฐานในเครื่องของฉันในเวลาที่ฉันตอบมันนี่อาจเป็นเวอร์ชั่นอื่น ๆ ในเครื่องของคุณ)

ดังนั้นการแก้ปัญหา (ในกรณีนี้) คือการทำให้แน่ใจว่า/usr/local/lib/libGL.so.1.2.0เป็นลิงค์สัญลักษณ์ที่ชี้ไปที่ห้องสมุด OpenGL ที่ถูกต้อง ในกรณีของฉันฉันมีไดรเวอร์ Nvidia 3.40 ดังนั้นฉันจึงวิ่ง:

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

แต่คุณจะต้องการชี้ไปที่ OpenGL lib ที่เหมาะสมกับคุณ (อยู่ในคำสั่ง find แรก)

โดยสรุป: การติดตั้งไดรเวอร์กราฟิก (กรรมสิทธิ์) สามารถแบ่งลิงก์สัญลักษณ์ที่ใช้สำหรับ OpenGL libs เพื่อแก้ปัญหานี้ให้แก้ไขลิงก์สัญลักษณ์ด้วยตนเอง (แก้ไข/usr/local/lib/libGL.so.1.2.0ก่อน)


ปัญหานี้ช่วยให้ฉันเข้าใจข้อความแสดงข้อผิดพลาด แต่ไม่สามารถแก้ไขได้ คำตอบ "ไดรเวอร์ nvidia ติดตั้งซ้ำ" ช่วยได้อย่างสมบูรณ์เพราะมันแก้ไขปัญหาให้ฉันได้
henko

@henko ใช่การติดตั้งไดรเวอร์ nvidia อาจเป็นวิธีที่เร็วและง่ายที่สุดในการคัดแยก กลับไปที่วิธีการนี้หากไม่ว่าด้วยเหตุผลใดก็ตามการติดตั้งไดรเวอร์ใหม่ไม่ได้ช่วยแก้ปัญหาของคุณและคุณต้องทำให้มือสกปรก
Hedgehog สมองเสื่อม

6
ฉันเข้าใจทุกส่วนยกเว้น "เกือบจะแน่นอน /usr/local/lib/libGL.so.1.2.0" Mine แสดงให้เห็น "libGL: OpenDriver: พยายาม /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so libGL: OpenDriver: พยายาม /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so" และทั้งหมด ไฟล์เหล่านี้มีอยู่ในระบบของฉัน ...
Samuel Li

1
ขอบคุณอีกครั้งสำหรับคำอธิบายของคุณ; ฉันเข้าใจปัญหาได้ดีขึ้น ฉันต้องการชี้ให้เห็นว่าในกรณีของฉันมีข้อผิดพลาดที่ยืนยันใน ubuntu swrast.so และผู้คนก็คุยกัน
ซามูเอลหลี่

1
ขอบคุณ @dementhedgehog นี่เป็นบทความที่ดีมากและช่วยฉันแก้ปัญหาของฉัน (ใน Fedora-25 โดยวิธี) = :) Up-ได้รับการโหวต
NYCeyes

5

ฉันมีปัญหาเดียวกันบน Ubuntu 16.10 พร้อมnvidia-340ไดรเวอร์และไม่มีวิธีแก้ไขปัญหาใดที่เหมาะกับฉัน

ปรากฎว่าไลบรารีแบบ 32 บิตไม่ได้อยู่บนเส้นทางของไลบรารี

หนึ่งในสายการบินนี้เหมาะสำหรับฉัน:

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

4

ฉันมีปัญหาในการทำให้ symlink ชี้ไปที่ไดรเวอร์ของ nVidia และฉันพบวิธีอื่นที่เหมาะกับฉัน

มันเป็นที่ที่ระบุไว้ที่นี่

และจะแสดงวิธีการติดตั้งไดรเวอร์ nVidia ผ่าน PPA ซึ่งสามารถใช้ได้กับ 349.16 ซึ่งเป็นเวอร์ชั่นล่าสุด

ก่อนถอนการติดตั้งไดรเวอร์ nVidia ใด ๆ ที่ติดตั้งในปัจจุบันโดยเปิดหน้าต่างเทอร์มินัล ( Ctrl+ ALT+ T) และพิมพ์

sudo apt-get remove nvidia*

รีบูตระบบของคุณ

จากนั้นเปิดเทอร์มินัลอื่นแล้วพิมพ์ดังต่อไปนี้

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

จากนั้นรีบูตอีกครั้ง

ฉันลองใช้งานหลังจากที่สูญเสียไปกับ symlink และ Steam ทำงานได้ดีทันทีหลังจากติดตั้งไดรเวอร์และอีกครั้งมันก็ยังทำงานได้หลังจากที่ฉันมีการอัปเดตระบบมากกว่า 400 เมกะไบต์


2
ฉันจะไม่แนะนำให้ออกจาก xorg-edgers ppa หลังจากติดตั้งไดรเวอร์แล้ว แพ็คเกจที่ไม่เสถียรจำนวนมากจะมีการอัปเดต
Pilot6

เพิ่งลบ nvidia * แก้ไขปัญหานี้ให้ฉันแล้ว!
xtofl

3

เพื่อให้เป็นทางเลือกสำหรับคำตอบของ Adrian: หากคุณต้องการใช้ไดรเวอร์ที่เป็นกรรมสิทธิ์ซึ่งจัดหาโดยตรงจาก NVIDIA แทนที่จะเป็น PPA ที่พบในการติดตั้ง (หรือในกรณีของฉันติดตั้งใหม่) ไดรเวอร์ที่เป็นกรรมสิทธิ์ล่าสุดสามารถช่วยกำจัดข้อผิดพลาด

หากคุณไม่ได้มีไดรเวอร์ NVIDIA ยังดาวน์โหลดไดรเวอร์จากเว็บไซต์ของ NVIDIA ถัดไปเปลี่ยนเป็น tty ( ctrl+ alt+ F1) แล้วปิดตัวจัดการล็อกอินของคุณ:

หากใช้ lightdm $ sudo service lightdm stop

หากใช้ gdm $ sudo service gdm stop

นำทางไปยังสคริปต์การติดตั้งและเรียกใช้แล้วทำตามคำแนะนำ ไม่ต้องกังวลหากสคริปต์ที่ติดตั้งล่วงหน้าล้มเหลว ฉันยอมรับการลงทะเบียน DKMS และไลบรารีความเข้ากันได้แบบ 32 บิตเสมอ หลังจากติดตั้งไดรเวอร์แล้วให้รีสตาร์ทเครื่องของคุณ:

$ sudo reboot

หากคุณมีสคริปต์การติดตั้งจากไดรเวอร์ NVIDIA รุ่นเก่าแล้วให้เรียกใช้สคริปต์การติดตั้งไดรเวอร์ NVIDIA ตามที่อธิบายไว้ด้านบน แต่ด้วยตัวเลือก "- อัปเดต":

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

นี่จะทำให้คุณได้รับไดร์เวอร์เวอร์ชั่นล่าสุด

การทำเช่นนี้แก้ไขlibGL error: failed to load driver: swrastข้อผิดพลาดของฉัน


3

พบปัญหาเดียวกันกับ Ubuntu 18 โดยทั่วไปเกิดขึ้นกับแอพ 32 บิตเท่านั้น ดังนั้นความคิดของฉันคือการติดตั้ง 32 บิต nvidia เพราะโฟลเดอร์ / usr / lib / i386-linux-gnu / ของฉันว่างเปล่าอย่างน่าสงสัย

หลังจากพยายามน้อยมากปัญหานี้แก้ไขปัญหาของฉันด้วยไอน้ำและไวน์ที่ไม่เริ่มทำงาน:

sudo apt install libnvidia-gl-418:i386

(และเปลี่ยน 418 เป็นเวอร์ชั่นที่คุณมี)

ที่น่าสนใจว่าแอพพลิเคชั่นไม่ได้บ่นว่าขาดการพึ่งพาระหว่างการติดตั้ง


ดูเหมือนว่าจะแก้ไขปัญหาหนึ่งในปัญหาที่เกี่ยวข้องกับคำถามอย่างน้อย ...
แอนดรูว์

มันเป็น 32 บิตอาจเป็นสาเหตุ โปรแกรมอื่นทำงานได้ดี แต่อาจเป็น 64 บิต อย่างไรก็ตามมันใช้งานได้ดี (ฉันต้องชนรุ่น)
Zoe

2

ฉันต้องยอมรับฉันไม่แน่ใจว่าทำไมสิ่งนี้ถึงได้ผลสำหรับฉัน แต่มันก็เป็นเช่นนั้น ในกรณีนี้โดยเฉพาะอย่างยิ่ง "แก้ไข" รายการ ld.so.conf.d โดยการเพิ่มรายการใหม่เช่นนี้ทำงาน:

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

สิ่งนี้สมเหตุสมผลแล้วจนกว่าคุณจะเรียกใช้สิ่งต่อไปนี้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

ทำไมการมีผลงานเดียวกันสามเท่าในผลงานเพิ่มขึ้นสามเท่า แต่ไม่เหมือนกันฉันไม่มีความคิด!


ได้ผลสำหรับฉันใน Ubunu 17.04 เพียงแค่ทราบ - เส้นทางคือ / usr / lib / nvidia-xxx โดยที่ xxx คือหมายเลขไดรเวอร์ดังนั้นปรับคำสั่งให้เหมาะสม
user2082382

2

นี่คือaptทางออกเดียวที่ได้ผลสำหรับฉันไม่มี symlinking หรือ mucking รอบกับld.so.conf.d:

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

1

ฉันแค่ใช้บรรทัดนี้:

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

และมันใช้งานได้

เพราะฉันเห็นอินพุตดังกล่าวเมื่อฉันดำเนินการ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
ผู้คนควรจะทำตามสิ่งนี้หมายความว่า ...
แอนดรู

ใช้งานได้สำหรับฉันขอบคุณ!
Hett

0

เรียกใช้สิ่งนี้:

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

รุ่นของไดรเวอร์ของคุณแสดงอยู่ในการตั้งค่า nvidia


-3

ฉันกำลังเผชิญกับปัญหาแปลก ๆ นี้เมื่อฉันไปที่ Ubuntu VM จาก Macbook Pro ของฉัน แต่ติดตั้งไดรเวอร์ Nvidia ด้านล่างใน Ubuntu 16.04 ของฉันเพื่อแก้ไขปัญหา หวังว่านี่จะเป็นประโยชน์สำหรับคุณ

sudo apt-get install nvidia-331


1
ทำไมคุณถึงต้องติดตั้งไดรเวอร์ Nvidia GPU บนระบบเกสต์ของ VM Ó_ò
David Foerster

downvote ไม่เหมาะสม @DavidFoerster ถูกต้องแล้วว่าการติดตั้งไดรเวอร์ GPU ใน VM นั้นไม่มีความหมายใด ๆ (เว้นแต่คุณจะผ่านฮาร์ดแวร์ GPU ไปยัง VM) แต่:ฉันกำลังใช้งาน X มากกว่า SSH และฉันกำลังเผชิญกับปัญหาเดียวกัน การเริ่มต้นแอปพลิเคชัน X บนเครื่องระยะไกล (VM) มักจะนำไปสู่ข้อผิดพลาดที่กล่าวถึงในคำถามของ OP ฉันยังไม่พบวิธีแก้ไขปัญหานั้น แต่ถ้าติดตั้งไดรเวอร์ GPU บน VM ระยะไกลจะเป็นวิธีแก้ปัญหาฉันจะทำไม่ว่าจะเหมาะสมหรือไม่ ไม่สนใจพวกเขา)
Binarus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.