如何将Ubuntu中缺失的SO文件复制到CentOS并全局可用?
解决CentOS中Python模块缺失libGL.so.1的问题
从Ubuntu提取缺失的SO文件
- 在Ubuntu终端执行命令定位
libGL.so.1的路径:
输出示例:ldconfig -p | grep libGL.so.1libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1 - 查看该软链接对应的真实文件:
输出示例:ls -l /usr/lib/x86_64-linux-gnu/libGL.so.1lrwxrwxrwx 1 root root 14 Aug 1 10:00 /usr/lib/x86_64-linux-gnu/libGL.so.1 -> libGL.so.1.7.0 - 将相关文件复制到CentOS的指定目录(比如
/opt/ubuntu-libs/),用scp命令:scp /usr/lib/x86_64-linux-gnu/libGL.so.* your-centos-user@centos-ip:/opt/ubuntu-libs/
在CentOS配置全局可用
临时生效(仅当前终端)
执行以下命令:
export LD_LIBRARY_PATH=/opt/ubuntu-libs:$LD_LIBRARY_PATH
永久生效(所有用户)
两种方式可选:
- 添加系统环境变量:
echo 'export LD_LIBRARY_PATH=/opt/ubuntu-libs:$LD_LIBRARY_PATH' >> /etc/profile source /etc/profile - 更新动态链接库缓存(更推荐):
echo '/opt/ubuntu-libs' > /etc/ld.so.conf.d/ubuntu-libs.conf ldconfig
注意事项
- 确保Ubuntu和CentOS的系统架构一致(均为x86_64或arm),否则SO文件无法兼容
- 若还有其他依赖缺失,可在Ubuntu上用
ldd分析Python模块的SO文件:
提取所有缺失的依赖文件后重复上述步骤ldd $(python -c "import cv2; print(cv2.__file__)") - 跨发行版复制SO仅为临时方案,优先用CentOS原生包管理器安装依赖,比如:
yum install mesa-libGL
内容的提问来源于stack exchange,提问作者Soumya
相关产品推荐
相关产品推荐

