เกิดข้อผิดพลาดในการโหลด libGL.so.1


48

เมื่อพยายามเรียกใช้ซอฟต์แวร์หลาย ๆ ชิ้น (โดยเฉพาะอย่างยิ่ง Steam และ Yenka) ฉันพบข้อผิดพลาดเช่นนี้: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

ฉันใช้ระบบ 64 บิตโดยใช้การ์ด NVidia Optimus (ฉันบูตแบบคู่สำหรับซอฟต์แวร์ windows บางรุ่นเท่านั้นที่ต้องใช้การ์ดกราฟิกเฉพาะ) ฉันติดตั้ง bumblebee แล้วและฉันใช้ไดรเวอร์ปัจจุบันของ nvidia แทนที่จะเป็นไดรเวอร์ที่ดาวน์โหลดจาก NVidia ตามที่แนะนำ

ห้องสมุด (libGL.so.1) ไม่อยู่ในไดเรกทอรีด้านบนของ/usr/libแต่มันมีอยู่ใน/usr/lib32/nvidia-currentขณะที่ softlink /usr/lib32/nvidia-current/libGL.so.304.64ไป

ส่วนของเอาต์พุตจาก ldconfig -p:

libGL.so.1 (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so

เห็นได้ชัดว่าห้องสมุดที่มีชื่อนั้นกำลังโหลด แต่อยู่ใน/usr/lib/x86_64-linux-gnuนั้นอย่างไรก็ตามซอฟต์แวร์ที่ติดตั้งดูเหมือนจะไม่สามารถ 'เห็น' ได้ สำหรับ Steam การใช้งานด้วย optirun จะทำให้มันใช้งานได้ แต่นี่ไม่ใช่กรณีของ Yenka ฉันคิดว่า optirun ทำให้ไลบรารีที่เก็บไว้/usr/lib32/nvidia-currentถูกใช้งานซึ่งทำให้ Steam สามารถทำงานได้ดังนั้นฉันจึงไม่สามารถเข้าใจได้ว่าทำไม Yenka ถึงไม่ทำงาน

ทุกคนสามารถอธิบายได้หรือไม่ว่าทำไมซอฟต์แวร์ไม่สามารถเห็นไลบรารี่ mesa ปกติและทำไม Yenka ปฏิเสธที่จะทำงานกับไลบรารี่ nvidia ปัจจุบัน

คำตอบ:


40

ด้วยไดรเวอร์ nvidia ที่ติดตั้ง skype กำลังมองหา i386 lib ที่ได้รับจากแพ็คเกจ nvidia เนื่องจากไม่มีอยู่จึงสามารถใช้ i386 libGL.so.1 ที่ mesa จัดหาให้

ผ่านการทดสอบบน (ubuntu-gnome raring โดยใช้ nvidia-325) และ (ubuntu-gnome saucy โดยใช้ nvidia-319) เราสามารถแก้ไขได้โดยต่อไปนี้:

update-alternatives --display i386-linux-gnu_gl_conf

นี่จะแสดงให้คุณเห็นว่ามีตัวเลือกอะไรบ้าง

i386-linux-gnu_gl_conf - auto mode
  link currently points to /usr/lib/nvidia-325/alt_ld.so.conf
/usr/lib/i386-linux-gnu/mesa/ld.so.conf - priority 500
  slave i386-linux-gnu_xorg_extra_modules: /usr/lib/i386-linux-gnu/xorg/x11-extra-modules
/usr/lib/nvidia-325/alt_ld.so.conf - priority 8602
Current 'best' version is '/usr/lib/nvidia-325/alt_ld.so.conf'

ดังนั้นทำต่อไปนี้:

sudo update-alternatives --config i386-linux-gnu_gl_conf

จากนั้นเลือกทางเลือกที่ดีที่สุด (ฉันเลือก i386-linux-gnu / mesa / ld.so.conf): ในผลลัพธ์ด้านล่างมีสองตัวเลือกสำหรับทางเลือก i386-linux-gnu_gl_conf (ให้ /etc/ld.so.conf d / i386-ลินุกซ์ gnu_GL.conf)

  Selection    Path                                     Priority   Status
------------------------------------------------------------
* 0            /usr/lib/nvidia-325/alt_ld.so.conf        8602      auto mode
  1            /usr/lib/i386-linux-gnu/mesa/ld.so.conf   500       manual mode
  2            /usr/lib/nvidia-325/alt_ld.so.conf        8602      manual mode

Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/i386-linux-gnu/mesa/ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode

หลังจากที่คุณทำเสร็จแล้วให้ลองเรียกใช้:

sudo ldconfig

แล้วคุณทำเสร็จแล้ว


2
ฉันมีสิ่งเดียวกันและทำงานได้อย่างสมบูรณ์แบบขอบคุณมาก (Ubuntu 13.10)
Xtremesupremacy3

น่ารำคาญ - ฉันมีตัวเลือก ld.so.conf เท่านั้นดังนั้นขอให้ "มีทางเลือกเดียวในกลุ่มลิงก์ i386-linux-gnu_gl_conf (ให้ /etc/ld.so.conf.d/i386-linux-gnu_GL.conf) : /usr/lib/i386-linux-gnu/mesa/ld.so.conf ไม่มีสิ่งใดในการกำหนดค่า "
dez93_2000

คุณติดตั้งแพ็คเกจ nvidia ใด? คุณติดตั้ง libgl1-mesa-glx หรือไม่ เกี่ยวกับ libgl1-mesa-glx ที่เชื่อถือได้: i386 ให้ /usr/lib/i386-linux-gnu/mesa/ld.so.conf (และไลบรารี libGL.so.1 * ที่ได้รับการ
รับรอง

คำตอบที่ดี ฉันได้รับข้อผิดพลาดในการใช้งานโปรแกรม Qt หลังจากเปลี่ยนไปใช้ไดรเวอร์ของ Nvidia - QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linkedและ[xcb] This is most likely caused by a broken X extension library- และหลังจากทำตามนี้แล้วก็ล้างมัน
Matthew อ่าน

ขอบคุณ มันทำงานบน 14.04 ด้วย สิ่งนี้จะไม่ส่งผลกระทบต่อโปรแกรมอื่น ๆ มันจะ? เช่นเดียวกับการแก้ไขสิ่งหนึ่งทำลาย 10 อื่น ๆ
Sudhir Khanger

51

ฉันมีปัญหาเดียวกันหลังจากติดตั้ง skype ... ดังนั้นคุณสามารถทำสิ่งใดก็ได้เพื่อแก้ไขข้อผิดพลาดนี้ ..

คนที่หนึ่งเรียกใช้แอปพลิเคชันโดยทำตามคำสั่ง ... ตัวอย่างเช่นฉันกำลังเรียกใช้ skype ..

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype

แหล่งที่มา

ที่สองที่ฉันทำ

sudo nano /etc/ld.so.conf.d/skype.conf

และเพิ่มบรรทัดต่อไปนี้ในนั้น

/usr/lib/i386-linux-gnu/mesa/

บันทึก & ออก

และเรียกใช้ในที่สุด

sudo ldconfig -v

ฉันหวังว่าสิ่งนี้จะแก้ไขข้อผิดพลาดlibGL.so.1ของคุณเช่นเดียวกับฉัน

คุณยังสามารถค้นหา libGL.so.1

   find / -name libGL.so.1

ฉันจัดการเพื่อแก้ไขในที่สุด น่าเสียดายที่ฉันจำไม่ได้ว่าอย่างไร แต่ฉันจำได้ว่ามันประกอบไปด้วยการสร้าง symlink แบบสุ่มไปยังไลบรารีเรียกใช้ ldconfig จำนวนมากจากนั้นลบ symlink ที่กล่าวมาข้างต้น ตอนนี้ทุกอย่างทำงานได้ดี
p0llard

มันใช้งานได้ดี! ที่สุด! นอกจากนี้ฉันจำได้ว่าทำในสิ่งที่ @ jdp407 พูดก่อนขั้นตอนเหล่านี้
Gundars Mēness

1
ในขณะที่โซลูชันนี้ดี แต่เคยจัดการแอปพลิเคชันทีละรายการเท่านั้น หากคุณมีแอปพลิเคชั่น 32 บิตอื่น ๆ ที่จำเป็นต้องใช้ libGL ดังนั้นคุณจะต้องทำขั้นตอนซ้ำสำหรับแอปพลิเคชันเหล่านั้น เป็นการดีที่สุดที่จะตั้งค่านี้ทั่วโลกโดยใช้ตัวเลือกการอัปเดต
eurythmia

@eurythmia นอกจากนี้คุณยังสามารถคัดลอกใน / lib และเรียกใช้ ldconfig sudo และมันจะเข้าถึงทั่วโลก
ซิม

เศร้าไม่ทำงานสำหรับฉันใน xubuntu, "ข้อผิดพลาด: ld.so: object '/usr/lib/i386-linux-gnu/mesa/libGL.so.1' จาก LD_PRELOAD ไม่สามารถโหลดล่วงหน้าวัตถุ (ไม่สามารถเปิดไฟล์วัตถุที่แชร์) : ละเว้น "; skype.conf อยู่ใน etc / dbus-1 / system.d ไม่ใช่ /ld.so.conf.d/ และดูเหมือนว่าจะเป็นไฟล์ที่แตกต่าง ...
dez93_2000

12

การแก้ไขที่นี่จะใช้งานได้ แต่มีวิธีแก้ไขที่ง่ายกว่า

หากskypeไม่ได้ผล แต่optirun skypeใช้งานได้คุณสามารถแก้ไขได้ด้วย:

sudo apt-get install bumblebee-nvidia --reinstall

(ผู้ที่ใช้ Bumblebee กับการ์ด AMD อาจจำเป็นต้องทำการติดตั้งซ้ำอีกครั้ง)

Bumblebee เป็นทั้งสาเหตุและแก้ไขปัญหานี้ แต่การแก้ไขจะเกิดขึ้นเมื่อทำการติดตั้งเมื่อทำให้ไลบรารี libGL พร้อมใช้งานกับการ์ดรวมและการ์ดที่มีประสิทธิภาพยิ่งขึ้น สิ่งนี้จะไม่เกิดขึ้นหากไลบรารี่เหล่านั้นไม่ได้ถูกติดตั้งเมื่อคุณติดตั้ง Bumblebee ดังนั้นจึงต้องมีการติดตั้งใหม่ ไม่ควรส่งผลกระทบต่อการกำหนดค่าของ bumblebee เช่นกันแม้ว่าจะเป็นการตรวจสอบที่คุ้มค่าหลังจากคุณทำสิ่งนี้แล้ว


3
มันทำงานได้ดีสำหรับฉัน ... ขอบคุณ Ubuntu gnome 14.04
aditia

1
ทางออกที่ง่ายที่สุดแน่นอน! ฉันรู้ว่ามันมีบางอย่างเกี่ยวกับลำดับการติดตั้งเนื่องจากฉันติดตั้งระบบใหม่สองครั้งเมื่อเร็ว ๆ นี้ (Ubuntu 14.04 64 บิต + การ์ดกราฟิก Nvidia Optimus) ครั้งแรกที่ฉันติดตั้ง Skype เป็นครั้งแรกจากนั้น Bumblebee ซึ่งในกรณีนี้ฉันไม่มีปัญหา ครั้งที่สองที่ฉันติดตั้ง Bumblebee ครั้งแรกจากนั้น Skype และปัญหานี้ก็เกิดขึ้น เพียงติดตั้ง bumblebee-nvidia ใหม่ตามที่แสดงในคำตอบนี้เพื่อแก้ไขปัญหา!
Sicco

ฉันมีแนวโน้มที่จะยอมรับว่านี่เป็นทางออกที่ดีกว่าของฉัน
eurythmia

2

แก้ไขรายการเดสก์ทอป:

sudo nano /usr/share/applications/skype.desktop

เปลี่ยน Exec เป็น:

Exec=env PULSE_LATENCY_MSEC=60 LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 skype %U

สิ่งนี้ทำงาน:

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1

ก่อนเรียกใช้ skype เมื่อคุณเริ่มด้วยรายการตัวเรียกใช้ / เดสก์ท็อป

มันควรจะทำงานได้ดีหลังจากนั้นตราบใดที่คุณเริ่มใช้งานโดยตัวเรียกใช้งานแอปพลิเคชัน


ไฟล์libGL.so.1อาจไม่อยู่ในเส้นทางนั้น (ไม่ใช่สำหรับฉันใน Debian 8 / Jessie) เพื่อหาเส้นทางที่คุณจะต้องใส่ในLD_PRELOADเพียงแค่คุณหาไฟล์ i386 sudo find / -name libGL.so.1 2>/dev/nullในระบบของคุณ: ผมพบว่ามันในและการทำงานดีใช้ว่า/usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1 LD_PRELOAD
f.ardelian

1

ฉันไม่แน่ใจว่าสิ่งนี้จะช่วยชี้แจงหรือไม่ แต่ฉันมีปัญหาเดียวกันกับ skype และ libGL.so.1 ทำงานด้วย 13.04 ด้วย optimus card และ bumblebee

ฉันได้รับปัญหาในการรัน skype โดยไม่ต้องใช้ optirun แต่ก็ใช้ได้ดี ฉันเพิ่งเปลี่ยนไฟล์เดสก์ท็อปเพื่อให้ทำงานกับ optirun ทุกครั้งและ voila แก้ไขแล้ว!


ไม่ได้รับการแก้ไขจริงๆเนื่องจากตอนนี้คุณกำลังใช้การ์ดโลภพลังงานมากขึ้นสำหรับ skype แน่นอนถ้าคุณกำลังใช้สะพาน VirtualGL แทนที่จะเป็นพรีมัสคุณจะต้องเผาผลาญพลังงานมากเท่ากับว่าคุณไม่ได้ติดตั้ง bumblebee และใช้การ์ด nvidia ตลอดเวลา
Jon Hanna

1

ฉันมีปัญหาที่คล้ายกันและแก้ไขได้โดยติดตั้ง libs 32 บิตบนระบบ 64 บิตของฉัน: apt-get install ia32-libs


0

ดาวน์โหลดเวอร์ชันล่าสุดจากหน้าเว็บอย่างเป็นทางการมากกว่าปล่อยให้มันดาวน์โหลดสิ่งที่ต้องการจากเทอร์มินัล (ถ้ามี) กว่าเพิ่ม bumblebee ppa ถ้าคุณยังไม่ได้เพิ่ม

sudo add-apt-repository ppa:bumblebee/stable

อัปเดตด้วยคำสั่งนี้:

sudo apt-get update

และติดตั้งvirtualgl(ซึ่งแก้ไขlibgl.so.1ข้อผิดพลาดสำหรับฉันใน Steam)

sudo apt-get install virtualgl

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.