ubuntu下编译安装libwebsockets


1.libwebsockets官网及GitHub地址

libwebsockets官网:https://www.libwebsockets.org/

GitHub地址:https://github.com/warmcat/libwebsockets

2.确保cmake、openssl安装成功

源码安装或是apt-get安装都可以。
我这里选择apt-get安装,方便一些。

sudo apt-get install cmake
sudo apt-get install openssl 
sudo apt-get install libssl-dev

注意:apt-get安装openssl时还需要安装libssl-dev,否则会在后面找不到头文件,编译libwebsockets时提示找不到ssl.h等,此外,还需要注意openssl的版本好像要大于1.0.0,libwebsockets使用的openssl的版本有最低要求,具体参见官网说明。

3.Ubuntu下下载、编译及安装

准备好环境后就可以下载、编译及安装libwebsockets了:

git clone https://github.com/warmcat/libwebsockets.git
cd libwebsockets
mkdir build
cd build
cmake ..
make
sudo make install

3.结果

只要准备好openssl、cmake等的安装,在Ubuntu下安装没有什么大的问题:

loon@loon-virtual-machine:~/work/libwebsockets/build$ cmake ..
...
 LWS_AVOID_SIGPIPE_IGN = OFF
 LWS_WITH_STATS = OFF
 LWS_WITH_SOCKS5 = OFF
 LWS_HAVE_SYS_CAPABILITY_H = 
 LWS_HAVE_LIBCAP = 
 LWS_WITH_PEER_LIMITS = OFF
 LWS_HAVE_ATOLL = 1
 LWS_HAVE__ATOI64 = 
 LWS_HAVE_STAT32I64 = 
 LWS_HAS_INTPTR_T = 1
 LWS_WITH_EXPORT_LWSTARGETS = ON
---------------------------------------------------------------------
-- Configuring done
-- Generating done
-- Build files have been written to: /home/loon/work/libwebsockets/build
loon@loon-virtual-machine:~/work/libwebsockets/build$ make
...
[ 94%] Building C object CMakeFiles/websockets_shared.dir/lib/roles/http/server/lejp-conf.c.o
[ 95%] Linking C shared library lib/libwebsockets.so
[ 95%] Built target websockets_shared
Scanning dependencies of target test-server-extpoll
[ 96%] Building C object CMakeFiles/test-server-extpoll.dir/test-apps/test-server.c.o
[ 97%] Linking C executable bin/libwebsockets-test-server-extpoll
[ 97%] Built target test-server-extpoll
Scanning dependencies of target test-lejp
[ 98%] Building C object CMakeFiles/test-lejp.dir/test-apps/test-lejp.c.o
[ 99%] Linking C executable bin/libwebsockets-test-lejp
[ 99%] Built target test-lejp
Scanning dependencies of target test-client
[ 99%] Building C object CMakeFiles/test-client.dir/test-apps/test-client.c.o
[100%] Linking C executable bin/libwebsockets-test-client
[100%] Built target test-client
loon@loon-virtual-machine:~/work/libwebsockets/build$ sudo make install
...
-- Installing: /usr/local/share/libwebsockets-test-server/libwebsockets.org-logo.png
-- Installing: /usr/local/share/libwebsockets-test-server/http2.png
-- Installing: /usr/local/share/libwebsockets-test-server/wss-over-h2.png
-- Installing: /usr/local/share/libwebsockets-test-server/lws-common.js
-- Installing: /usr/local/share/libwebsockets-test-server/test.html
-- Installing: /usr/local/share/libwebsockets-test-server/test.css
-- Installing: /usr/local/share/libwebsockets-test-server/test.js
-- Installing: /usr/local/share/libwebsockets-test-server/private/index.html
-- Installing: /usr/local/share/libwebsockets-test-server/lws-ssh-test-keys
-- Installing: /usr/local/share/libwebsockets-test-server/lws-ssh-test-keys.pub
-- Installing: /usr/local/lib/cmake/libwebsockets/LibwebsocketsConfig.cmake
-- Installing: /usr/local/lib/cmake/libwebsockets/LibwebsocketsConfigVersion.cmake
-- Installing: /usr/local/lib/cmake/libwebsockets/LibwebsocketsTargets.cmake
-- Installing: /usr/local/lib/cmake/libwebsockets/LibwebsocketsTargets-release.cmake

4.测试

安装完成后,可以直接使用libwebsockets提供的测试程序直接测试:

loon@loon-virtual-machine:~/work/libwebsockets/build$ libwebsockets-test-
libwebsockets-test-client          libwebsockets-test-server
libwebsockets-test-fuzxy           libwebsockets-test-server-extpoll
libwebsockets-test-lejp

比如libwebsockets-test-server:

loon@loon-virtual-machine:~/work/libwebsockets/build$ libwebsockets-test-server
[2018/09/08 11:06:57:1378] NOTICE: libwebsockets test server - license LGPL2.1+SLE
[2018/09/08 11:06:57:1388] NOTICE: (C) Copyright 2010-2018 Andy Green <andy@warmcat.com>
Using resource path "/usr/local/share/libwebsockets-test-server"
[2018/09/08 11:06:57:1403] NOTICE: Creating Vhost 'default' port 7681, 5 protocols, IPv6 off

运行服务后访问服务器端的7681端口即可,当然也可以指定端口和资源,这里不再细说了。

5.最后

目前在Ubuntu16.04 64位下测试完成后,我通过交叉编译也移植了libwebsockets到openwrt下了(mips的cpu架构),运行效果还可以。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐