1. 程式人生 > >openssl 升級歐卡國際平臺搭建安裝編譯libwebsocket通信庫

openssl 升級歐卡國際平臺搭建安裝編譯libwebsocket通信庫

smp 官網 lib pat 兼容 圖片 crypt blog 遇到

歐卡國際平臺搭建論壇:haozbbs.com Q1446595067
libwebsocket Ubuntu 16.04中遇到下面報錯。
error: ‘TLSv1_2_client_method
官網也碰到同樣的問題https://github.com/warmcat/libwebsockets/issues/1098
但是也沒有明確給出解決方案,通過嘗試發現是因為目前系統自帶的openssl庫不兼容libwebsocket代碼,因此進行重新安裝,使用源碼安裝指定的版本,由於源碼安裝過程中目錄不正確,所以遇到不少問題。這裏記錄下來。

我使用1.1.0f版本:

wget https://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1f.tar.gz

cd openssl-1.0.1f
tar zxvf openssl-1.1.0f.tar.gz
./config
#./config --prefix=/usr/local --openssldir=/usr/local/openssl
sudo make install
#sudo make install>log.txt

1
2
3
4
5
6
7

通過在make install log打印找到了源碼安裝的相應的路徑位置:
install libcrypto.so.1.1 -> /usr/local/lib64/libcrypto.so.1.1
install libssl.a -> /usr/local/lib64/libssl.a

install ./include/openssl/txt_db.h -> /usr/local/include/openssl/
install apps/openssl -> /usr/local/bin/openssl

因此需要在環境變量加入路徑/usr/local/include/openssl 終於沒有報那個錯誤了。
但是link有問題。報:對‘OPENSSL_init_ssl’未定義的引用,這個問題比較坑,因為前面安裝的軟件對應的一些遺留沒有卸載,導致link一些以前錯誤的版本庫,導致問題,因此我手動卸載以前的openssl.

usr/local/include$ sudo rm -fr openssl/
/usr/local$ sudo rm -fr ssl/

/usr/local/bin$ sudo rm openssl
/usr/lib/x86_64-linux-gnu$ sudo rm libssl*
/usr/lib/x86_64-linux-gnu$ sudo rm libcrypto.a

1
2
3
4
5

刪除上面後,再次說找不到庫,因為cmake cmake中使用find_package(OpenSSL REQUIRED)需要的是下面的目錄,但是源碼安裝的位置不是這樣。
OpenSSL include dir: /usr/local/include
OpenSSL libraries: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so
Searching for OpenSSL executable and dlls
OpenSSL executable: /usr/local/bin/openssl
因為前面刪對應的庫,因此只能手動復制過去。
/usr/lib/x86_64-linux-gnu$ sudo cp /usr/local/lib64/libssl. ./
sudo cp /usr/local/lib64/libcrypto
./
執行上面的操作就可以找到openssl了:

再次執行libwebsocket的安裝過程就可以了,詳見https://blog.csdn.net/bvngh3247/article/details/80648584

git clone git://git.libwebsockets.org/libwebsockets
cd libwebsockets
mkdir build
cd build
cmake -DLWS_MAX_SMP=1 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS=”-fpic” ..
make && sudo make install

1
2
3
4
5
6

這裏寫圖片描述
編譯通過。

openssl 升級歐卡國際平臺搭建安裝編譯libwebsocket通信庫