天天看點

國密GmSSL編譯安裝後報錯解決

作者:hxliu666

背景描述

因為要測一個GmSSL加密的功能。于是去下載下傳了GmSSL的源碼對其進行編譯,驗證功能是否可用。本以為是個簡單的功能,沒想到的是,出現了一個奇怪的現象。很詭異,特記錄一下,以備後用,同時分享給大家,希望對大家有所幫助~

國密GmSSL編譯安裝後報錯解決

問題完整記錄

問題描述:

普通使用者編譯GmSSL後,可以直接使用。但是切換到root使用者後,直接報錯。報錯資訊如下:

gmssl: relocation error: gmssl: symbol PBEPARAM_it, version OPENSSL_1_1_0d not defined in file libcrypto.so.1.1 with link time reference           

通過ldd指令,可以清楚的看到有兩個庫的引用位置不一樣,是以初步推測,大緻問題所在是OPENSSL庫,沖突導緻的。

國密GmSSL編譯安裝後報錯解決

引用庫的不同

在解決問題之前,先解釋下為什麼兩者加載的庫不一樣。普通使用者是因為我執行它的時候報錯,找不到庫,于是我把它複制到/usr/lib64/目錄下。是以普通使用者就直接可以正常使用gmssl。但是root為啥不行?要如何解決下它呢?

解決方法

把相關的so檔案,所在目錄寫到系統加載的目錄裡面。這樣無論是誰都可以加載到它。

1、要确認so所在的檔案路徑。通常在GmSSL的目錄裡有

2、把它添加到系統加載的so目錄裡。

cat /etc/ld.so.conf  通過這個檔案查找加載的目錄
echo "/home/GmSSL-GmSSL-v2/"   >> /etc/ld.so.conf.d/gmssl.conf            

3、手動加載一次

ldconfig           

4、驗證

國密GmSSL編譯安裝後報錯解決

驗證

一些想法:

在解決此問題過程中,自己走了個彎路。導緻花費的時間有點長。就是在普通使用者完成後,報錯找不到庫,然後自己把它複制到/usr/lib64 下面這一步。是以,建議大家,以後碰到類似的問題,建議大家加載到系統的加載目錄下。

繼續閱讀