Помилка завантаження 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 лише програмне забезпечення, для якого потрібна спеціальна відеокарта). У мене встановлений джміль, і я використовую драйвер nvidia-current, а не той, завантажений з NVidia, як це рекомендовано.

Бібліотека (libGL.so.1) відсутня у верхньому каталозі /usr/lib, однак вона присутня в /usr/lib32/nvidia-current, як програмне посилання на /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 скайп шукає 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-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

Після цього спробуйте запустити:

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 *.
eurythmia

Чудова відповідь. Я отримую помилки запущених програм Qt після перемикання на драйвер Nvidia - QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linkedі [xcb] This is most likely caused by a broken X extension library- і після цього очистило його.
Метью читайте

Дякую. Він також працює 14.04. Це не вплине на будь-яку іншу програму. Буде? Як виправлення однієї речі порушує 10 інших.
Sudhir Khanger

51

У мене виникає така ж проблема після встановлення скайпу ... тож ви можете зробити будь-яку справу, щоб виправити цю помилку ..

1-й - це запуск програми, виконавши наступну команду ... наприклад, ім. Skype ..

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

ДЖЕРЕЛО

2-е, що я і зробив

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

Мені вдалося це врешті виправити. На жаль, я не можу пригадати, але я пам’ятаю, що це полягало у створенні випадкових посилань на бібліотеку, багато запуску ldconfig та видаленні згаданих символьних посилань. Зараз все добре працює.
p0llard

Це добре працювало! Нарешті! Також я пам’ятаю, що робив те, що сказав @ jdp407 перед цими кроками.
Gundars Mēness

1
Незважаючи на те, що це рішення добре, воно обробляє додатки лише по одному. Якщо у вас є інші 32-бітні програми, для яких потрібен libGL.so, вам доведеться повторити процес для цих програм. Найкраще встановити цю перевагу в усьому світі, використовуючи альтернативи для оновлення
eurythmia

@eurythmia Ви також можете скопіювати його в / lib та запустити sudo ldconfig, і це буде глобальний доступ
Qasim

на жаль, не працює для мене на xubuntu, "ПОМИЛКА: ld.so: object '/usr/lib/i386-linux-gnu/mesa/libGL.so.1' з LD_PRELOAD не може бути попередньо завантажено (не вдається відкрити спільний файл об'єкта) : ігнорується "; skype.conf знаходиться в etc / dbus-1 / system.d not /ld.so.conf.d/ і виглядає як інший файл ...
dez93_2000

12

Виправлення тут працюватимуть, але є більш простий.

Якщо skypeце не працює, але optirun skypeпрацює, ви можете виправити це за допомогою:

sudo apt-get install bumblebee-nvidia --reinstall

(Люди, які використовують джмеля з картками AMD, можливо, знадобляться повторно встановити).

Bumblebee і викликає, і усуває цю проблему, але виправлення, яке вона застосовує, відбувається після встановлення, коли робить бібліотеки libGL доступними для інтегрованої карти, а також більш потужної карти. Це не відбудеться, якщо ці бібліотеки ще не були встановлені під час встановлення Bumblebee, отже, потрібна повторна інсталяція. Це також не повинно впливати на вашу конфігурацію джмелів, хоча, очевидно, це варто перевірити після того, як ви це зробили.


3
це добре працює для мене ... дякую. Ubuntu gnome 14.04
aditia

1
Однозначно найпростіше рішення! Я знав, що це стосується порядку встановлення, коли нещодавно двічі перевстановлював систему (графічна карта Ubuntu 14.04 64bit + Nvidia Optimus). Я вперше встановив Skype, а потім Bumblebee, і в цьому випадку у мене не було проблем. Вдруге я спершу встановив Bumblebee, а потім Skype, і ця проблема виникла. Просто перевстановлення джмеля-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

перед запуском скайпу, коли ви запускаєте його із запуску / запису на робочому столі.

Після цього він повинен працювати добре, доки ви не запускаєте його за допомогою програми запуску програм.


Файл 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 з оптимізною картою та джмелем.

У мене вийшла проблема під керуванням скайпом без optirun, але вона спрацювала нормально. Я щойно змінив файл на робочому столі, щоб він запускався з optirun кожного разу та вуаля. виправлено!


Насправді не виправлено, оскільки ви зараз використовуєте більш енергійну карту для скайпу. Дійсно, якщо ви користуєтесь мостом VirtualGL, а не примусом, ви по суті збираєтеся спалити стільки ж енергії, як якщо б у вас не було встановленого джмеля і просто використовували картку nvidia весь час.
Джон Ханна

1

У мене була аналогічна проблема, і я її вирішив, встановивши 32-бітові лібри в моїй 64-бітовій системі: apt-get install ia32-libs


0

Завантажте останню версію з офіційної сторінки пара, ніж нехай вона завантажує те, що потрібно з терміналу (якщо є необхідність). ніж додати джмеля ppa, якщо цього ще не зробили.

sudo add-apt-repository ppa:bumblebee/stable

оновіть цю команду:

sudo apt-get update

і встановити virtualgl(що вирішило libgl.so.1помилки для мене в Steam)

sudo apt-get install virtualgl

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.