我尝试在 Ubuntu 22.04(64 位)上运行 Quartus 13,但和许多其他人一样,libpng12.so.0 不允许它运行。首先,它找不到该文件。然后我从对另一个问题的回答,然后将文件手动放置在 Quartus 安装文件夹中,因此错误变为:
quartus: error while loading shared libraries: libpng12.so.0: wrong ELF class: ELFCLASS64
Quartus的安装文件夹有以下路径:/home/developer/n/quartus/bin
现在我问这个问题是因为许多解决方案在 Ubuntu 21 之前运行良好。我需要针对 Ubuntu 22.04 的 32 位 libpng12 包进行修复(我推测这就是出现 ELF 类错误的原因)。
命令find -name libpng12
返回:
./usr/local/lib/libpng12.so.0
./usr/lib/x86_64-linux-gnu/libpng12.so.0
./home/developer/n/libpng/.libs/libpng12.so.0
./root/libpng-1.2.54/.libs/libpng12.so.0
find: ‘./run/user/1000/doc’: Permission denied
find: ‘./run/user/1000/gvfs’: Permission denied
./snap/core/14399/lib/x86_64-linux-gnu/libpng12.so.0
./snap/core/14399/usr/lib/x86_64-linux-gnu/libpng12.so.0
我将它们全部逐一复制到 /quartus/bin,但每次都出现相同的 ELFCLASS 错误。
我还尝试将 libpng12 的路径放入ld.so.conf
文件中,/etc
然后运行,ldconfig
但问题仍然存在。我尝试过以下答案:
https://bbs.archlinux.org/viewtopic.php?id=212077
https://community.intel.com/t5/Programmable-Devices/Quartus-can-t-find-shared-library/td-p/161251
这不再有效:
sudo apt-get install libpng12-0:i386
此包不再可用: https://packages.ubuntu.com/xenial/i386/libpng12-0/download
如何运行我的软件?
答案1
这在 64 位 Ubuntu 22.04 上完美运行:
sudo apt-get install libpng12-0
这将安装 Quartus 13 所需的 64 位 libpng12 版本。转到 Quartus 安装的 /bin 文件夹。我的路径是这样的:
/root/altera/13.0sp1/quartus/bin
然后运行这个:
./quartus --64bit
答案2
我在使用 Libero 时也遇到过类似的问题,而不是 Quartus。不幸的是,这是使用 32 位库的 Libero 的 64 位版本,没有纯 64 位版本的 Libero。
对我来说,从 Launchpad Librarian 的旧版本 Ubuntu 获取库的副本,然后提取库并手动安装就足够了。
wget http://launchpadlibrarian.net/377985836/libpng12-0_1.2.54-1ubuntu1.1_i386.deb
dpkg-deb -xv libpng12-0_1.2.54-1ubuntu1.1_i386.deb ./libpng
mv libpng/lib/i386-linux-gnu/libpng12.so.0* /lib/i386-linux-gnu/
rm -rf libpng*
ldconfig