Lỗi khi tải libGL.so.1


48

Khi cố chạy các phần mềm khác nhau (đáng chú ý là Steam và Yenka), tôi đã gặp phải một lỗi tương tự như sau: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

Tôi đang chạy một hệ thống 64 bit, với thẻ NVidia Optimus (Tôi khởi động kép cho một số phần mềm chỉ có một số cửa sổ yêu cầu thẻ đồ họa chuyên dụng). Tôi đã cài đặt bumblebee và tôi đang sử dụng trình điều khiển hiện tại của nvidia, thay vì trình điều khiển được tải xuống từ NVidia, như được đề xuất.

Thư viện (libGL.so.1) không có trong thư mục trên cùng /usr/lib, tuy nhiên, nó hiện diện /usr/lib32/nvidia-currentdưới dạng liên kết mềm /usr/lib32/nvidia-current/libGL.so.304.64.

Một phần của đầu ra từ 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

Rõ ràng là một thư viện có tên đó đang được tải, nhưng chúng được đặt trong đó /usr/lib/x86_64-linux-gnu, tuy nhiên phần mềm được cài đặt dường như không thể 'nhìn thấy' nó. Đối với Steam, việc chạy nó với optirun khiến nó hoạt động, nhưng đây không phải là trường hợp của Yenka. Tôi cho rằng optirun khiến thư viện được lưu trữ /usr/lib32/nvidia-currentđược sử dụng, cho phép Steam chạy, vì vậy tôi không thể hiểu tại sao Yenka sẽ không chạy.

Bất cứ ai cũng có thể giải thích tại sao phần mềm không thể thấy thư viện mesa bình thường và tại sao Yenka từ chối chạy với thư viện nvidia hiện tại?

Câu trả lời:


40

Với trình điều khiển nvidia được cài đặt, skype đang tìm kiếm một i386 lib được cung cấp bởi gói nvidia. Vì điều đó không tồn tại, bạn có thể sử dụng i386 libGL.so.1 do mesa cung cấp.

Đã thử nghiệm trên (ubfox-gnome raring, sử dụng nvidia-325) và (ub Ubuntu-gnome saucy, sử dụng nvidia-319), chúng tôi có thể khắc phục điều này bằng cách sau:

update-alternatives --display i386-linux-gnu_gl_conf

Điều này sẽ cho bạn thấy các tùy chọn có sẵn là gì.

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'

vì vậy, làm như sau:

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

sau đó chọn phương án thay thế tốt nhất (tôi đã chọn i386-linux-gnu / mesa / ld.so.conf): Trong đầu ra bên dưới có hai lựa chọn cho i386-linux-gnu_gl_conf (cung cấp /etc/ld.so.conf. d / i386-linux-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

Sau khi bạn đã hoàn thành điều đó, hãy thử chạy:

sudo ldconfig

và thế là xong.


2
Tôi đã có chính xác như vậy và điều này đã hoạt động hoàn hảo, cảm ơn rất nhiều (Ubuntu 13.10)
Xtremeupremacy3

phiền toái - Tôi chỉ có tùy chọn ld.so.conf, vì vậy hãy nhận "Chỉ có một lựa chọn duy nhất trong nhóm liên kết i386-linux-gnu_gl_conf (cung cấp /etc/ld.so.conf.d/i386-linux-gnu_GL.conf) : /usr/lib/i386-linux-gnu/mesa/ld.so.conf. Không có gì để định cấu hình. "
dez93_2000

bạn đã cài đặt gói nvidia nào? Bạn đã cài đặt libgl1-mesa-glx chưa? Trên libgl1-mesa-glx đáng tin cậy: i386 cung cấp /usr/lib/i386-linux-gnu/mesa/ld.so.conf (và các thư viện libGL.so.1 * giả định.
eury nhịpia

Câu trả lời chính xác. Tôi đã gặp lỗi khi chạy chương trình Qt sau khi chuyển sang trình điều khiển Nvidia - QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked[xcb] This is most likely caused by a broken X extension library- và sau đó đã xóa nó.
Matthew Đọc

Cảm ơn. Nó hoạt động vào ngày 14.04. Điều này sẽ không ảnh hưởng đến bất kỳ chương trình khác. Nó sẽ không Giống như sửa một thứ phá vỡ 10 thứ khác.
Sudhir Khanger

51

Tôi gặp vấn đề tương tự sau khi cài đặt skype ... vì vậy bạn có thể làm một trong hai cách để khắc phục lỗi này ..

Đầu tiên là chạy ứng dụng bằng cách làm theo lệnh ... ví dụ tôi đang chạy skype ..

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

NGUỒN

Thứ 2 đó là những gì tôi đã làm

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

và thêm dòng sau vào nó

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

cứu thoát

và cuối cùng chạy

sudo ldconfig -v

tôi hy vọng điều này sẽ khắc phục lỗi libGL.so.1 của bạn như đã xảy ra

Bạn cũng có thể tìm thấy libGL.so.1

   find / -name libGL.so.1

Tôi quản lý để sửa chữa nó cuối cùng. Thật không may, tôi không thể nhớ làm thế nào, nhưng tôi nhớ nó bao gồm việc tạo các liên kết ngẫu nhiên đến thư viện, chạy ldconfig rất nhiều, và sau đó xóa các liên kết đã nói ở trên. Bây giờ mọi thứ đều hoạt động tốt.
p0llard

Điều này làm việc tốt! Cuối cùng! Ngoài ra, tôi nhớ làm những gì @ jdp407 đã nói trước các bước này.
Đấu trường Mēness

1
Mặc dù giải pháp này là tốt, nhưng nó chỉ xử lý từng ứng dụng một. Nếu bạn có bất kỳ ứng dụng 32 bit nào khác yêu cầu libGL.so, thì bạn sẽ phải lặp lại quy trình cho các ứng dụng đó. Tốt nhất nên đặt tùy chọn này trên toàn cầu bằng cách sử dụng các lựa chọn thay thế cập nhật
eury nhịpia

@eury tiếtia Bạn cũng có thể sao chép nó trong / lib và chạy sudo ldconfig và nó sẽ được truy cập toàn cầu
Qasim

thật đáng buồn khi tôi không làm việc với tôi trên xubfox : làm ngơ"; skype.conf nằm trong etc / dbus-1 / system.d chứ không phải /ld.so.conf.d/ và có vẻ là một tệp khác ...
dez93_2000

12

Các bản sửa lỗi ở đây sẽ hoạt động, nhưng có một cách đơn giản hơn.

Nếu skypekhông hoạt động nhưng optirun skypekhông hoạt động, thì bạn có thể sửa nó bằng:

sudo apt-get install bumblebee-nvidia --reinstall

(Những người sử dụng Bumblebee với thẻ AMD có thể cần phải cài đặt lại tương đương).

Bumblebee cả nguyên nhân và khắc phục vấn đề này, nhưng cách khắc phục được áp dụng xảy ra khi cài đặt, khi nó làm cho các thư viện libGL có sẵn cho thẻ tích hợp cũng như thẻ mạnh hơn. Điều này sẽ không xảy ra nếu những thư viện đó chưa được cài đặt khi bạn cài đặt Bumblebee, do đó cần cài đặt lại. Nó cũng không ảnh hưởng đến cấu hình ong nghệ của bạn, mặc dù rõ ràng nó đáng để kiểm tra sau khi bạn thực hiện việc này.


3
nó hoạt động tốt cho tôi ... cảm ơn. Ubuntu gnome 14.04
aditia

1
Chắc chắn là giải pháp dễ nhất! Tôi biết nó có liên quan đến thứ tự cài đặt khi tôi cài đặt lại hệ thống của mình hai lần gần đây (card đồ họa Ubuntu 14.04 64bit + Nvidia Optimus). Lần đầu tiên tôi cài đặt Skype và sau đó là Bumblebee, trong trường hợp đó tôi không gặp vấn đề gì. Lần thứ hai tôi lần đầu tiên cài đặt Bumblebee và sau đó là Skype và vấn đề này nảy sinh. Chỉ cần cài đặt lại bumblebee-nvidia như trong câu trả lời này đã giải quyết được vấn đề!
Sicco

Tôi có khuynh hướng đồng ý rằng đây có vẻ là một giải pháp tốt hơn của tôi.
eury nhịpia

2

Chỉnh sửa mục máy tính để bàn:

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

Thay đổi Exec thành:

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

Điều này chạy:

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

trước khi chạy skype khi bạn khởi động nó với mục launcher / desktop.

Nó sẽ chạy tốt sau đó miễn là bạn khởi động nó bằng trình khởi chạy ứng dụng.


Tệp libGL.so.1có thể không nằm trong đường dẫn đó (nó không dành cho tôi, trên Debian 8 / Jessie). Để tìm đường dẫn mà bạn phải đặt, LD_PRELOADchỉ cần tìm tệp i386 trên hệ thống của bạn : sudo find / -name libGL.so.1 2>/dev/null. Tôi tìm thấy nó trong /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1và nó hoạt động tốt bằng cách sử dụng như LD_PRELOAD.
f.ardelian

1

Tôi không chắc điều này có giúp làm rõ hay không nhưng tôi có cùng một vấn đề với skype và libGL.so.1. Cũng chạy 13.04 với thẻ Optimus và ong nghệ.

Tôi gặp vấn đề khi chạy skype mà không có optirun, nhưng nó hoạt động tốt với. Tôi chỉ thay đổi tập tin máy tính để chạy với optirun mỗi lần và voila. đã sửa!


Không thực sự cố định, vì hiện tại bạn đang sử dụng thẻ tham lam nhiều năng lượng hơn cho skype. Thật vậy, nếu bạn đang sử dụng cầu VirtualGL chứ không phải primus, về cơ bản, bạn sẽ đốt cháy nhiều năng lượng như thể bạn chưa cài đặt ong nghệ và chỉ sử dụng thẻ nvidia mọi lúc.
Jon Hanna

1

Tôi đã gặp một vấn đề tương tự và giải quyết nó bằng cách cài đặt lib 32 bit trên hệ thống 64 bit của mình: apt-get install ia32-libs


0

Tải xuống phiên bản mới nhất từ ​​trang steam chính thức, hơn là để nó tải xuống những gì nó cần từ thiết bị đầu cuối (nếu có nhu cầu). hơn là thêm bumblebee ppa nếu bạn chưa có.

sudo add-apt-repository ppa:bumblebee/stable

cập nhật nó bằng lệnh này:

sudo apt-get update

và cài đặt virtualgl(đã giải quyết các libgl.so.1lỗi cho tôi trong Steam)

sudo apt-get install virtualgl

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.