記一次動態依賴包版本過高解決過程


舉例: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 檢驗

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM