Kesalahan memuat libGL.so.1

48

Ketika mencoba menjalankan berbagai perangkat lunak (terutama Steam dan Yenka), saya menemukan kesalahan yang mirip dengan ini: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

Saya menjalankan sistem 64 bit, dengan kartu NVidia Optimus (saya dual boot untuk perangkat lunak windows saja yang membutuhkan kartu grafis khusus). Saya telah menginstal bumblebee, dan saya menggunakan driver nvidia-saat ini, bukan yang diunduh dari NVidia, seperti yang disarankan.

Pustaka (libGL.so.1) tidak ada di direktori teratas /usr/lib, namun hadir /usr/lib32/nvidia-current, sebagai softlink ke /usr/lib32/nvidia-current/libGL.so.304.64.

Bagian dari output dari 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

Jelas perpustakaan dengan nama itu sedang dimuat, tetapi mereka berada di /usr/lib/x86_64-linux-gnu, namun perangkat lunak yang diinstal tampaknya tidak dapat 'melihatnya'. Untuk Steam, menjalankannya dengan optirun menyebabkannya berfungsi, tetapi ini tidak berlaku untuk Yenka. Saya berasumsi bahwa optirun menyebabkan perpustakaan disimpan dalam /usr/lib32/nvidia-currentuntuk digunakan, yang memungkinkan Steam untuk berjalan, jadi saya tidak mengerti mengapa Yenka tidak akan berjalan.

Adakah yang bisa menjelaskan mengapa perangkat lunak tidak dapat melihat perpustakaan mesa normal, dan mengapa Yenka menolak untuk menjalankan dengan perpustakaan nvidia-saat ini?

p0llard
sumber

Jawaban:

40

Dengan driver nvidia yang terpasang, skype mencari lib i386 yang disediakan oleh paket nvidia. Karena itu tidak ada, tidak apa-apa menggunakan libGL.so.1 i386 yang disediakan oleh mesa.

Diuji pada (ubuntu-gnome raring, menggunakan nvidia-325) dan (ubuntu-gnome saucy, menggunakan nvidia-319) kami dapat memperbaiki ini dengan yang berikut:

update-alternatives --display i386-linux-gnu_gl_conf

Ini akan menunjukkan kepada Anda apa opsi yang tersedia.

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'

jadi, lakukan hal berikut:

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

kemudian pilih alternatif terbaik (saya memilih i386-linux-gnu / mesa / ld.so.conf): Pada output di bawah ini ada dua pilihan untuk alternatif i386-linux-gnu_gl_conf (menyediakan /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

Setelah selesai, coba jalankan:

sudo ldconfig

dan kemudian kamu selesai.

eurythmia
sumber
2
Saya memiliki hal yang persis sama dan ini bekerja dengan sempurna, terima kasih banyak (Ubuntu 13.10)
Xtremesupremacy3
mengganggu - saya hanya memiliki opsi ld.so.conf, jadi dapatkan "Hanya ada satu alternatif di grup tautan i386-linux-gnu_gl_conf (menyediakan /etc/ld.so.conf.d/i386-linux-gnu_GL.conf) : /usr/lib/i386-linux-gnu/mesa/ld.so.conf. Tidak ada yang perlu dikonfigurasi. "
dez93_2000
paket nvidia mana yang telah Anda instal? Apakah Anda sudah menginstal libgl1-mesa-glx? Pada libgl1-mesa-glx yang tepercaya: i386 menyediakan /usr/lib/i386-linux-gnu/mesa/ld.so.conf (dan perpustakaan libGL.so.1 * yang diasosiasikan.
eurythmia
Jawaban yang bagus Saya mendapatkan kesalahan saat menjalankan program Qt setelah beralih ke driver Nvidia - QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linkeddan [xcb] This is most likely caused by a broken X extension library- dan setelah ini membersihkannya.
Matius Baca
Terima kasih. Ini bekerja pada 14,04 juga. Ini tidak akan memengaruhi program lain. Akankah itu? Seperti memperbaiki satu hal, istirahat 10 lainnya.
Sudhir Khanger
51

Saya mengalami masalah yang sama setelah menginstal skype ... sehingga Anda dapat melakukan apa pun untuk memperbaiki kesalahan ini ..

Yang pertama menjalankan aplikasi dengan mengikuti perintah ... misalnya menjalankan skype ..

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

SUMBER

2 yang saya lakukan

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

dan tambahkan baris berikut di dalamnya

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

simpan & keluar

dan terakhir dijalankan

sudo ldconfig -v

Saya harap ini akan memperbaiki kesalahan libGL.so.1 Anda seperti yang saya alami

Anda juga dapat menemukan libGL.so.1

   find / -name libGL.so.1
Qasim
sumber
Saya berhasil memperbaikinya pada akhirnya. Sayangnya, saya tidak ingat caranya, tapi saya ingat itu terdiri dari membuat symlink acak ke perpustakaan, menjalankan ldconfig banyak, dan kemudian menghapus symlink yang disebutkan di atas. Semuanya berfungsi dengan baik sekarang.
p0llard
Ini bekerja dengan baik! Akhirnya! Juga, saya ingat melakukan apa yang dikatakan @ jdp407 sebelum langkah-langkah ini.
Gundars Mēness
1
Meskipun solusi ini bagus, ia hanya menangani aplikasi satu per satu. Jika Anda memiliki aplikasi 32 bit lain yang memerlukan libGL.so, maka Anda harus mengulangi proses untuk aplikasi tersebut. Yang terbaik adalah mengatur preferensi ini secara global menggunakan pembaruan-alternatif
eurythmia
@eurythmia Anda juga dapat menyalinnya di / lib dan menjalankan sudo ldconfig dan itu akan menjadi akses global
Qasim
sayangnya tidak bekerja untuk saya di xubuntu, "ERROR: ld.so: object '/usr/lib/i386-linux-gnu/mesa/libGL.so.1' dari LD_PRELOAD tidak dapat dimuat sebelumnya (tidak dapat membuka file objek bersama) : diabaikan "; skype.conf berada di etc / dbus-1 / system.d bukan /ld.so.conf.d/ dan terlihat sebagai file yang berbeda ...
dez93_2000
12

Perbaikan di sini akan berhasil, tetapi ada yang lebih sederhana.

Jika skypetidak berhasil tetapi optirun skypetidak berfungsi, maka Anda dapat memperbaikinya dengan:

sudo apt-get install bumblebee-nvidia --reinstall

(Orang yang menggunakan Bumblebee dengan kartu AMD mungkin perlu melakukan instalasi ulang yang setara).

Bumblebee menyebabkan dan memperbaiki masalah ini, tetapi perbaikan yang terjadi terjadi saat pemasangan, ketika itu membuat perpustakaan libGL tersedia untuk kartu terintegrasi serta kartu yang lebih kuat. Ini tidak akan terjadi jika pustaka-pustaka itu belum diinstal ketika Anda menginstal Bumblebee, karenanya membutuhkan instalasi ulang. Seharusnya tidak mempengaruhi konfigurasi lebah Anda, meskipun itu jelas layak untuk diperiksa setelah Anda melakukan ini.

Jon Hanna
sumber
3
ini bekerja dengan baik untuk saya ... terima kasih. Ubuntu gnome 14.04
aditia
1
Pasti solusi termudah! Saya tahu itu ada hubungannya dengan urutan instalasi karena saya menginstal ulang sistem saya dua kali baru-baru ini (Ubuntu 14.04 64bit + kartu grafis Nvidia Optimus). Pertama kali saya pertama kali menginstal Skype dan kemudian Bumblebee, dalam hal ini saya tidak punya masalah. Kedua kalinya saya pertama kali menginstal Bumblebee dan kemudian Skype dan masalah ini muncul. Cukup instal ulang bumblebee-nvidia seperti yang ditunjukkan dalam jawaban ini untuk menyelesaikan masalah!
Sicco
Saya cenderung setuju bahwa ini sepertinya solusi yang lebih baik daripada solusi saya.
eurythmia
2

Edit entri desktop:

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

Ubah Exec ke:

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

Ini berjalan:

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

sebelum menjalankan skype saat Anda memulainya dengan entri peluncur / desktop.

Itu akan berjalan dengan baik setelah itu selama Anda memulainya menggunakan peluncur aplikasi.

hazmat
sumber
File libGL.so.1mungkin tidak berada di jalur itu (bukan untuk saya, di Debian 8 / Jessie). Untuk menemukan jalan yang Anda harus dimasukkan ke dalam LD_PRELOADhanya menemukan file i386 pada sistem Anda: sudo find / -name libGL.so.1 2>/dev/null. Saya menemukannya /usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1dan berfungsi baik menggunakannya sebagai LD_PRELOAD.
f.ardelian
1

Saya tidak yakin apakah ini akan membantu memperjelas atau tidak, tetapi saya memiliki masalah yang sama dengan skype dan libGL.so.1. Juga menjalankan 13,04 dengan kartu optimus dan lebah.

Saya mendapat masalah menjalankan skype tanpa optirun, tetapi berhasil dengan baik. Saya baru saja mengubah file desktop untuk dijalankan dengan optirun setiap waktu dan voila. tetap!


sumber
Tidak benar-benar diperbaiki, karena Anda sekarang menggunakan kartu yang lebih rakus energi untuk skype. Memang, jika Anda menggunakan jembatan VirtualGL daripada primus, Anda pada dasarnya akan membakar kekuatan sebanyak jika Anda tidak memiliki bumblebee diinstal dan hanya menggunakan kartu nvidia sepanjang waktu.
Jon Hanna
1

Saya memiliki masalah yang sama dan menyelesaikannya dengan menginstal 32bit lib pada sistem 64bit saya: apt-get install ia32-libs

Mat
sumber
0

Unduh versi terbaru dari halaman resmi, daripada membiarkannya mengunduh apa yang dibutuhkan dari terminal (jika ada kebutuhan). daripada menambahkan bumblebee ppa jika Anda belum melakukannya.

sudo add-apt-repository ppa:bumblebee/stable

perbarui dengan perintah ini:

sudo apt-get update

dan instal virtualgl(yang menyelesaikan masalah libgl.so.1kesalahan untuk saya di Steam)

sudo apt-get install virtualgl
Addae Dans
sumber
0

Mencoba:

sudo apt-get install libgl1-mesa-glx-lts-utopic:i386
Keledai
sumber