libpng12.so.0: 无法打开共享目标文件:错误的 ELF class: ELFCLASS64

libpng12.so.0: cannot open shared object file: wrong ELF class: ELFCLASS64

我正在尝试在 docker 容器上安装 Quartus 13.0,但我在使用 libpng12 库时遇到了问题。

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 位库,但它不理解它。谁能帮我弄清楚如何解决这个问题?

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

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

您可以执行以下操作。 从下载 libpng12-0here.

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

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

我的回答是特定于 Bionic beaver 和 *64 架构的。您可以查看上面提供的 link 以下载其他特定于体系结构的包。

希望对您有所帮助!