我正在尝试在 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 位库,但它不理解它。有人可以帮我弄清楚如何解决这个问题吗?
尝试安装 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
我的回答是针对 Bionic beaver 和 *64 架构的。您可以查看上面提供的链接来下载其他特定于架构的软件包。
希望这有帮助!
刚刚在 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