Ubuntu20.04 解决32bits libcrypt.so.1: cannot open shared object file: No such file or directory 问题

Ubuntu20.04 上执行程序时遇到找不到 libcrypt.so.1这个问题,先确认是否真的没有这个库

$ whereis libcrypt.so.1
libcrypt.so: /lib/x86_64-linux-gnu/libcrypt.so.1 /usr/lib/x86_64-linux-gnu/libcrypt.so

$ ls -l /lib/x86_64-linux-gnu/libcrypt.so.1
lrwxrwxrwx 1 root root 17 Mar 11  2020 /lib/x86_64-linux-gnu/libcrypt.so.1 -> libcrypt.so.1.1.0

$ ls -l /lib/x86_64-linux-gnu/libcrypt.so.1.1.0
-rw-r--r-- 1 root root 202760 Mar 11  2020 /lib/x86_64-linux-gnu/libcrypt.so.1.1.0

有啊,怎么回事?

优快云上看到有人也遇到这个问题,模仿他们的方法,

在/etc/ld.so.conf中加入/lib/x86_64-linux-gnu 这一行,保存之后,再运行:/sbin/ldconfig –v更新一下配置()

$ sudo ldconfig -v | grep libcrypt.so.1
/sbin/ldconfig.real: Can't stat /usr/local/lib/x86_64-linux-gnu: No such file or directory
/sbin/ldconfig.real: Path `/lib/x86_64-linux-gnu' given more than once
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu' given more than once
/sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-2.31.so is the dynamic linker, ignoring

        libcrypt.so.1 -> libcrypt.so.1.1.0
/sbin/ldconfig.real: /lib32/ld-2.31.so is the dynamic linker, ignoring

然后再执行下程序,仍然提示找不到这个库文件。

后来百度google查了一通,都没能找到正确的解决方法。

突然意识到可能那个程序需要的是32bit的库文件。

于是安装32bits的libcrypt.so.1, 再执行程序,问题解决了!

安装32位 libcrypt.so.1方法如下:

Ubuntu20.04上,libcrypt1这个包的i386版本提供32位的 licrypt.so.1,命令如下:

$ sudo apt install libcrypt1:i386

如果上述命令不能成功执行,可能需要先使能32bits,命令如下:

sudo dpkg --add-architecture i386
sudo apt update

### 解决方案 对于Ubuntu 20.04系统中遇到`ImportError: libffi.so.8: cannot open shared object file: no such file or directory`的问题,可以采取如下措施来解决问题。 由于该问题是因系统升级导致特定版本的共享库缺失所引起,在这种情况下,可以通过安装对应版本的libffi包或者创建符号链接的方式解决这个问题。如果当前系统的libffi已经更新到了更高版本(比如libffi8),而某些应用程序仍然依赖于旧版本(如libffi7或更低版本),那么创建指向新版本的符号链接是一种常见解决方案[^1]。 #### 方法一:尝试直接安装所需版本的libffi 首先考虑直接安装所需的libffi版本: ```bash sudo apt-get update sudo apt-get install libffi8 ``` 这一步骤旨在确保系统中有正确版本的libffi存在。然而需要注意的是,并不是所有的Linux发行版都会提供libffi的具体次要版本作为可安装包,因此这种方法可能不适用于所有情况。 #### 方法二:创建符号链接 当直接安装具体版本不可行时,另一种有效的方法是在不影响现有较高版本的情况下为程序建立到较低版本的访问路径。假设已确认系统确实安装有libffi8,则执行以下命令找到其位置并为之创建一个名为libffi.so.8的符号链接至/usr/lib/x86_64-linux-gnu或其他适当目录下: ```bash find /usr/lib -name "libffi.so*" sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.8 /usr/lib/x86_64-linux-gnu/libffi.so.8 ``` 请注意上述路径应根据实际查找结果调整。这样做可以让那些期望加载libffi.so.8的应用能够成功定位到现有的高版本库文件而不必真正降级整个libffi软件包。 最后重启终端或运行`source ~/.bashrc`使更改生效后再测试是否解决了原始错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值