舉例:xxx.so 包依賴了openssl的libssl.so 和 libcrypto.so 包,
由於openssl版本為1.1.1k 已經取消了一些接口函數,嘗試低版本后發現openssl-1.0.2j.tar.gz包含這些接口函數。
另外xxx.so為動態包,是不能將openssl-1.0.2j.tar.gz 編譯后libssl.a 這種方法引用的
首先檢驗缺少那些依賴包:
ldd t2sdk.so

not found 表示找不到依賴包,
由於之前安裝過openssl-1.1.1k版本,所以可以直接對依賴的兩個包進行軟鏈接。

ln -s /usr/lib64/libssl.so.1.1 /usr/lib64/libssl.so
ln -s /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so
使用ln 命令進行軟連接建立,libcrypto.so.1.1 是原有文件,libcrypto.so 是軟連接名稱。libcrypto.so 是ldd命令后看到缺少的包名,如果缺少 libnsl.so.1則命令就是
ln -s /usr/lib64/libnsl.so.2 /usr/lib64/libnsl.so.1
此時可以正常編譯了。
==============================以下為嘗試安裝低版本操作,對實際的代碼編譯好像沒起到作用================================================
所以需要先卸載openssl包,再安裝1.0.2j版本(如果可以的話,可以在c++代碼中使用xxx.a靜態包,依賴包也是靜態包就可以了)
謹慎使用yum remove openssl
由於yum remove 會卸載和openssl相關的包,可能會導致其他錯誤。建議使用rpm -e --nodeps <包名>命令卸載
#-e :卸載軟件
[root@blog source]# rpm -e openssl
刪除一個rpm包時忽略依賴關系
#--nodeps: 忽略依賴關系強制卸載
[root@blog source]# rpm -e --nodeps openssl
然后下載openssl-1.0.2j.tar.gz
tar -zxvf openssl-1.0.2j.tar.gz
./config ----prefix=/usr/local
make && make install
安裝完畢使用 openssl version 檢驗
