Steam: ошибка при загрузке общих библиотек: libGL.so.1: неправильный класс ELF: ELFCLASS64

11

После установки драйвера Nvidia, когда я пытаюсь запустить Steam, я получаю эту ошибку:

steam: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64

Я нашел этот вопрос и один из ответов, которые предлагают установить:

sudo apt-get install libgl1-mesa-glx:i386

Я уже установил libgl1-mesa-glx:i386. Чем я это нашел . Он предлагает сделать символическую ссылку на 32-битную libGL. Как это сделать? Есть ли у вас другие предложения?

Олкай Эрташ
источник
Я могу подтвердить, что переустановка библиотеки libgl1 помогла. Ubuntu 14.04 x86-64, настольный компьютер, графический драйвер Nvidia для GEForce GTS 450.
hariprasad
A sudo aptitude install libgl1-mesa-glx:i386показывает, что 305 пакетов будут удалены, а около 100 будут не разрешены. Поскольку это выглядит так, как будто это заполняет мою систему, я подозреваю, что лучший способ действий - это двойная загрузка Ubuntu с 64 библиотеками и 32-битной библиотекой или, что лучше, одна основная система для большинства вещей, одна 64-битная установка для игр и 32-битный экземпляр на собственный раздел для 32-битных игр.
Андерс

Ответы:

11

Эта проблема в 64-битных системах вызвана тем, /usr/libчто она раньше, LD_LIBRARY_PATHчем /usr/lib32. Steam пробует 64-битные библиотеки и жалуется, не глядя дальше.

Однако это можно исправить с помощью in, ~/Steam/steam.shно этот файл, похоже, восстанавливается в исходную версию при каждом запуске Steam.

Я исправил это, создав скрипт, который делает это:

#!/bin/bash
export LD_LIBRARY_PATH=/usr/lib32:$LD_LIBRARY_PATH
steam $*

Это зависит /usr/lib32от пути к библиотеке, затем запускается steam (с оригинальными аргументами скрипта). Сейчас он /usr/lib32находится в пути /usr/lib, и steam успешно использует 32-битные библиотеки.

Вы также можете добавить строку

export LD_LIBRARY_PATH=/usr/lib32:$LD_LIBRARY_PATH

до /usr/bin/steam, это будет иметь тот же эффект, если вы добавите его до самой последней строки. Вам нужно будет sudo для редактирования /usr/lib/steam.

  • Это дает дополнительный бонус - это лучшее исправление, поскольку все, что запускается в Steam (пункт меню приложения, ассоциации типов файлов, ассоциации URI), будет работать правильно.
  • Недостатком является то, что /usr/bin/steam, вероятно, будет перезаписано при обновлении Steam.

Я использую последний метод, сохраняя сценарий в качестве резервной копии. Таким образом, если это /usr/bin/steamбудет перезаписано, я могу просто скопировать, вставить строку снова из сценария, чтобы исправить это.

Terion
источник
7

Исправлено в raring ringtail (xubuntu 13.04) с драйверами nVidia 319.17, добавив /usr/lib32в новый файл:

$ sudo nano /etc/ld.so.conf.d/lib32.conf

затем работает:

$ sudo ldconfig 

Поскольку файл /etc/ld.so.confсодержит include /etc/ld.so.conf.d/*.conf, любой файл в этом каталоге с расширением .confанализируется.

загривок
источник
Это, вероятно, лучше, чем любой из других ответов.
Tek
2

Исправлено это для Mint 14 с новейшими 64-битными драйверами Nvidia 310.32 с поддержкой 32-битных драйверов, установленной в

/emul/ia32-linux/usr/lib 

добавлением

export LD_LIBRARY_PATH=/emul/ia32-linux/usr/lib:$LD_LIBRARY_PATH 

После первого "export"в начале /usr/bin/steamфайла.

terrigan
источник
Использование «Mint» в качестве основы не рекомендуется, поскольку Mint здесь оффтоп, даже если он является производной от Ubuntu
Томас Уорд
2

Я столкнулся с той же проблемой, но с скайпом . Все вышеперечисленные решения (создание символических ссылок, настройка LD_LIBRARY_PATH) не сработали для меня.

Я наконец нашел помощь в посте, уже упомянутом выше - но с другим решением.

Похоже, что программа обновления nvidia (при запросе разрешения на установку библиотек 32-битной совместимости OpenGL) испортилась и удалилась, /usr/lib/i386-linux-gnu/mesa/libGL.so.1и/usr/lib/i386-linux-gnu/mesa/libGL.so .

Переустановка библиотеки libgl1 помогла:

sudo apt-get install --reinstall libgl1-mesa-glx:i386

б-студия
источник
1

Если вы используете ограниченную бета-версию Steam для Linux, я опубликую это на форумах Steam для Linux . Они должны иметь лучшую помощь, и если это проблема с самим программным обеспечением, разработчики смогут исправить это. Кроме того, если вы используете 64-битную ОС, там много людей, которые, вероятно, прошли через проблемы, которые у вас есть, и, следовательно, точно знают, что делать.

пряность
источник
0

У меня была точно такая же проблема на 64-битной Linux Mint Debian Edition 2.

Я решил эту проблему путем переустановки драйверов NVIDIA с 32-битными библиотеками GL (после установки этих библиотек steam запрашивал).

Я просто предполагаю, что установка этих 32-битных графических библиотек нарушает некоторые связи, а переустановка драйверов NVIDIA с этими реальными 32-битными библиотеками устраняет проблему линковки.

SHOTbyGUN
источник
0

У меня была эта проблема со скайпом. Я исправил это, установив официальный драйвер Nvidia снова и установив 32-битную библиотеку совместимости во время установки.

Саид Заринфам
источник