关于linxu下 lib库相关问题的

在Linux环境中,由于openssl库版本过旧,导致scp命令无法使用。升级openssl后,虽然scp可用,但项目编译时找不到libssl库。通过建立软链接指向新版本libssl.so,项目编译成功,但启动失败。为解决启动问题,恢复旧版本openssl,并创建软链接使项目正常运行。使用ldd命令检查程序依赖库,确保发布到外网时不会因libssl版本问题导致故障。提供openssl-1.0.1e下载链接及解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为要写个自动打版工具,发现scp无法使用。因为openssl库太过老旧,所以就升级了一下。用yum升级之后,scp确实可以使用了。但是原来项目的libssl.so却出现了问题,cmake编译项目的时候无法找到libssl库,报错 error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory。

发现libssl库的版本对不上了。用ln -s建立软连接之后,让项目使用高版本的libss库,项目编译通过了。但是启动项目的时候,发现编译的时候骗过了编译器,但是启动不了,版本升级应该改动了不少东西,导致了项目里逻辑出现了问题。(原来是这样 ./libssl.so -> libssl.so.0.9.8e,变成了 ./libssl.so -> libssl.so.1.1.1)。又手动安装之前的版本之后,用ln -s 建立软连接之后,可以正常启动了。相当于lisssl.so对应了两个版本,一个是0.9.8e,一个是1.1.1。发布到外网的时候又出现了问题,因为外网libssl的版本是系统自带的,需要升级,考虑到以后经常发布需要不停的升级ssl库的情况,只能把ssllib回退到之前的版本。


通过  ldd $(which program)  命令可以看到当前启动的程序会用到哪些lib库,以及是否有响应的库





openssl-1.0.1e 下载地址

https://www.openssl.org/source/old/1.0.1/openssl-1.0.1e.tar.gz


载完毕后解压,注意编译安装openssl需要c和prel环境。
   通过./config shared zlib-dynamic 来生成Makefile文件。
然后make
生成

libssl.so.1.0.0

libcrypto.so.1.0.0


将两个文件拷贝到   /usr/lib64  


创建软链接(ln源就是上面查出的对应版本的库文件):

cd /usr/lib64/

ln -s libssl.so.1.0.0          libssl.so.10

ln -s libcrypto.so.1.0.0    libcrypto.so.10


删除软连接用的是 rm /usr/lib64/libcrypto.so.1.1 命令


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值