欧卡国际平台搭建论坛: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
这里写图片描述
编译通过。
原文地址:http://blog.51cto.com/13857059/2137579