libpng12.so.0: невозможно открыть общий объектный файл: неправильный класс ELF: ELFCLASS64

Я пытаюсь установить Quartus 13.0 на Docker-контейнер, но у меня проблема с libpng12 lib.

builder@580847ded665:~$ ls -ld $(locate -r libpng.*\.so.*)
lrwxrwxrwx. 1 root root     18 Jan  6  2016 /lib/x86_64-linux-gnu/libpng12.so.0 -> libpng12.so.0.54.0
-rw-r--r--. 1 root root 149904 Jan  6  2016 /lib/x86_64-linux-gnu/libpng12.so.0.54.0
lrwxrwxrwx. 1 root root     35 Jan  6  2016 /usr/lib/x86_64-linux-gnu/libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
builder@580847ded665:~$ xvfb-run -a /home/builder/altera/13.0/quartus/bin/tb2_install --enable
tb2_install: error while loading shared libraries: libpng12.so.0: cannot open shared object file: wrong ELF class: ELFCLASS64

Проблема в том, что у меня есть 32-битное приложение, пытающееся использовать 64-битную библиотеку, и оно не понимает этого. Может ли кто-нибудь помочь мне разобраться, как решить эту проблему?

3 ответа

Попробуйте установить 32-битную версию libpng. На Debian это должно быть что-то вроде apt-get install libpng16-16:i386, Если tb2_install продолжает выбирать 64-битную версию, которую вам может потребоваться обновить LD_LIBRARY_PATH поставить 32-битные пути перед 64-битными.

Другим решением является использование 64-битного установщика Quartus.

Вот что вы можете сделать. Скачать libpng12-0 пакет отсюда.

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

sudo su

Установите загруженный пакет с помощью следующей команды:

dpkg -i libpng12-0_1.2.50-1ubuntu2.14.04.3_amd64.deb; apt-get install -f

(Имя пакета может измениться, обязательно измените его соответствующим образом).

Если вы получаете сообщение об ошибке, подобное этому:

dpkg: error processing archive libpng12-0_1.2.50-1ubuntu2.14.04.3_amd64.deb (--install): trying to overwrite shared '/usr/share/doc/libpng12-0/changelog.Debian.gz'

Это означает, что в вашей системе может быть установлен существующий пакет libpng, что вызывает конфликт. Сделай это:

mv /usr/share/doc/libpng12-0 /usr/share/doc/libpng12-0.backup

Это означает, что вы перемещаете каталог, вызывающий конфликт, в другое место.

В заключение,

dpkg -i libpng12-0_1.2.50-1ubuntu2.14.04.3_amd64.deb; apt-get install -f

Мой ответ относится к бионическому бобру и архитектуре *64. Вы можете проверить ссылку выше, чтобы загрузить другие пакеты для конкретной архитектуры.

Надеюсь это поможет!

Только что боролся с этим, чтобы установить Lattice iCEcube2 в Debian. Мое решение:

Найдите последнюю 32-битную версию libpng:

aptitude search libpng

Выберите версию i:386, в моем случае:

sudo aptitude install libpng16-16:i386

Свяжите libpng12.so.0 с 32-битной версией libpng16.so.0:

В /usr/local/lib:

sudo ln -s /usr/lib/i386-linux-gnu/libpng16.so.16.37.0 libpng12.so.0

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