CentOS变Ubuntu后后端程序SO库报错,解决方案+原理分析!
问题描述
在进行系统更新后,运行某应用程序时出现以下错误:
failed to open shared library: /lib/libssl.so.10: version `libssl.so.10' not found (required by /usr/local/etc/XX/libprotest.so)"
这表明应用程序依赖的libssl.so.10
共享库在新系统中缺失,导致程序无法正常运行。
问题分析
通过对比新旧系统的环境,我们发现:
-
老系统环境:
- 使用
ldd
命令查看libprotest.so.so
的依赖关系,明确显示它依赖于libssl.so.10
- 使用
strings
命令进一步确认:strings libprotest.so.so | grep libssl.so # 输出:libssl.so.10strings /lib64/libssl.so.10 | grep libcrypto.so # 输出:libcrypto.so.10
- 该库位于
/lib64/libssl.so.10
路径下 - 同时还有相关的
libcrypto.so.10
依赖
- 使用
-
新系统环境:
- 缺少
libssl.so.10
和libcrypto.so.10
这两个特定版本的库 - 可能是系统更新后使用了新版本的OpenSSL库,而旧版本被移除
- 缺少
解决方案
方法一:创建自定义库路径并设置环境变量
-
创建专用目录并复制所需库文件:
# 创建专用目录