Почему я получаю сообщение об ошибке при загрузке общих библиотек: libGL.so.1: неправильный класс ELF: ELFCLASS64 при запуске Mercury? [закрыто]

Использование собственного OpenGL

/home/software/Mercury_3.3/c_linux/bin/mercury.x: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64
6
задан 30 March 2014 в 07:04

1 ответ

Похож на Ваше приложение, приложение на 32 бита, но пытается загрузить библиотеку на 64 бита. На установке на 64 бита у Вас могут быть и версия (32 бита и 64 бита) любых установленных библиотек. 32 бита могут быть найдены под /usr/lib32 и 64 бита под /usr/lib64.

На Linux, библиотеки являются поисковым использованием последовательности пути, немного как список переменных ПУТИ все каталоги для поиска исполняемого файла, который Вы хотите выполнить, когда никакой путь не дан. Эта последовательность для поиска библиотек определяется в переменной, названной LD_LIBRARY_PATH.

проблема состоит в том, что каталог для версий на 64 бита появляется перед каталогом с версиями на 32 бита. И обычно название библиотеки идентично для версии на 64 бита и на 32 бита.

можно преодолеть эту проблему путем создания маленького сценария запуска для приложения как этот:

#!/bin/bash

export LD_LIBRARY_PATH=/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH

<your binary> $*

, Если уже существует сценарий для запущения этого приложения, можно просто добавить строку

export LD_LIBRARY_PATH=/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH

к нему около вершины.

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

0
ответ дан 30 March 2014 в 07:04

Другие вопросы по тегам:

Похожие вопросы: