1. 程式人生 > 資訊 >V 社《半條命 2》更新:適配 Steam Deck 掌機,支援超寬屏顯示器

V 社《半條命 2》更新:適配 Steam Deck 掌機,支援超寬屏顯示器

Openeuler中OpenSSL的安裝

20191318王澤文


  參考連結https://www.cnblogs.com/rocedu/p/5087623.html進行OpenSSL的安裝。

  從官網下載最新版OpenSSL,這裡下載的是openssl-3.0.0.tar.gz 。

  使用tar解壓原始碼。
tar xzvf openssl-1.1.0-pre1.tar.gz


  進入到OpenSSL的資料夾中。

  然後使用下列命令編譯安裝:

./Configure

make

sudo make install



  使用make test測試沒有問題。


  使用參考連結中的程式碼進行測試:

  測試程式碼test_openssl.c:

#include <stdio.h>
#include <openssl/evp.h>

int main(){
	
    OpenSSL_add_all_algorithms();
	
    return 0;
}

  然後用下面命令編譯:
gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -ldl -lpthread

報錯

  檢視程式碼中OpenSSL_add_all_algorithms()所在標頭檔案evp.h中的定義發現OPENSSL_init_crypto

函式確實被引用,再查詢檔案或查詢安裝資訊發現OPENSSL_init_crypto所在檔案crypto.hevp.h都位於/usr/local/include/openssl而不是/usr/local/ssl/inlcude

  接著,我們使用修改後的命令編譯gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -ldl -lpthread依舊報同樣錯誤。

  這時,發現所用的lib庫不存在

  通過查詢安裝資訊,發現lib安裝在/usr/local/lib64中,為crypto的庫

  重新編譯、
gcc -o to test_openssl.c -I /usr/local/include/openssl -L /usr/local/lib64 -lcrypto -lpthread


執行
./to;echo $?
  發現報錯

  通過查詢lib64發現確實沒有libcrypto.so.3檔案,但有libcrypto.so.1.1檔案,這時可以通過兩種方法解決。

  1. 直接使用系統自帶的舊版本的libcrypto.so.1.1檔案編譯
    gcc -o to test_openssl.c -I /usr/local/include/openssl /usr/lib64/libcrypto.so.1.1 -lpthread
  2. 在解壓的OpenSSL-3.0資料夾中,可以發現有libcrypto.so.3檔案,可以通過將其放入lib64中解決。
    cp /wzw/openssl-3.0.0/libcrypto.so.3 /usr/lib64/libcrypto.so.3