Использование родного OpenGL
/home/software/Mercury_3.3/c_linux/bin/mercury.x: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64
Похож на Ваше приложение, приложение на 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
к нему около вершины.
я предпочту первый метод, создавая определенный сценарий, поскольку любой сценарий запуска, предоставленный пакетом, будет, вероятно, перезаписан в случае обновления.