Linux Mint下pyenv安装Python报错找不到libffi.so.8问题求助
共享库版本选择逻辑(Debian系)
- 编译阶段:优先读取
PKG_CONFIG_PATH环境变量指定路径下的.pc配置文件获取库的版本、链接参数,再匹配系统默认路径(/usr/lib/pkgconfig、/usr/lib/x86_64-linux-gnu/pkgconfig等)下的配置 - 运行阶段:优先加载
LD_LIBRARY_PATH环境变量指定路径下的库,再读取ldconfig缓存(由/etc/ld.so.conf.d/下的配置生成,可通过ldconfig -p查看)中的库,最后匹配/lib、/usr/lib等默认路径下的库
你当前系统中没有libffi.so.8,构建时却尝试链接该版本,大概率是环境变量中存在非系统路径的优先级更高的libffi配置,或之前手动编译安装过高版本libffi未清理干净。
解决方案
方案1(推荐,无系统改动)
编译安装Python时强制指定系统libffi的路径,替换下方的<Python版本号>为你要安装的版本即可:
LDFLAGS="-L/usr/lib/x86_64-linux-gnu" CPPFLAGS="-I/usr/include" pyenv install <Python版本号>
该方案强制构建流程读取系统路径下的头文件和库文件,不会改动系统全局配置。
方案2(临时兼容,操作简单)
为系统已有的libffi.so.7创建libffi.so.8的软链接,构建完成后可按需删除:
# 创建软链接 sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7 /usr/lib/x86_64-linux-gnu/libffi.so.8 # 安装完成后如果不需要可以执行以下命令删除软链接 # sudo rm /usr/lib/x86_64-linux-gnu/libffi.so.8
libffi 7和8的ABI兼容性较好,常规使用场景下不会出现异常。
方案3(不推荐新手使用)
如果你确实需要安装libffi.so.8,可以添加Ubuntu 22.04的源手动安装,但需要注意处理依赖冲突,避免影响系统其他软件的正常运行。
额外排查建议
可以执行以下命令检查是否存在其他路径下的高版本libffi配置:
echo $PKG_CONFIG_PATH echo $LD_LIBRARY_PATH find / -name "libffi.pc" 2>/dev/null
如果找到其他路径下的libffi.pc文件,检查其内容中指定的版本号,确认是否为版本8的配置。
内容的提问来源于stack exchange,提问作者Mike Crowe
相关产品推荐
相关产品推荐

