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

问题描述 投票:0回答:3

我正在尝试在 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 位库,但它不理解它。有人可以帮我弄清楚如何解决这个问题吗?

linux docker shared-libraries quartus
3个回答
2
投票

尝试安装 32 位版本的 libpng。在 Debian 上,它应该类似于

apt-get install libpng16-16:i386
。如果
tb2_install
继续选择 64 位版本,您可能需要更新
LD_LIBRARY_PATH
以将 32 位路径放在 64 位路径前面。

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


1
投票

您可以执行以下操作。 从以下位置下载

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

我的回答是针对 Bionic beaver 和 *64 架构的。您可以查看上面提供的链接来下载其他特定于架构的软件包。

希望这有帮助!


0
投票

刚刚在 Debian 中安装 Lattice iCEcube2 时遇到了这个问题。 我的解决方案:

找到最新的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

© www.soinside.com 2019 - 2024. All rights reserved.