libpng12.so.0:无法打开共享对象文件:错误的ELF类:ELFCLASS64

时间:2017-12-21 11:01:49

标签: linux docker shared-libraries quartus

我试图在docker容器上安装Quartus 13.0但我在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位库,它不理解它。有谁可以帮我弄清楚如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这就是您可以做的。 从下载libpng12-0软件包 here.

现在转到下载文件夹,然后从那里打开终端。使用以下命令切换为超级用户:

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体系结构。您可以查看上面提供的链接,以下载其他特定于体系结构的软件包。

希望这会有所帮助!

答案 1 :(得分:0)

尝试安装32位版本的libpng。在Debian上它应该是apt-get install libpng16-16:i386之类的东西。如果tb2_install继续选择64位版本,则可能需要更新LD_LIBRARY_PATH以将32位路径放在64位路径之前。

另一种解决方案是使用64位Quartus安装程序。