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