linux c websocket开源库libwebsockets的编译和使用

时间:2024-04-09 17:52:25

我在编译过程中出现了本文步骤4.1和4.2所解决的两个问题, 如果你也出现了相同的问题, 请根据4.1和4.2解决, 如果没有出现, 请略过步骤4. 现步骤如下:

步骤1) 下载解压, github地址如下:

https://github.com/warmcat/libwebsockets

步骤2) 假如解压后的目录如此: /home/user/libwebsockets-master, 请按如下步执行命令行操作: 

cd /home/user/libwebsockets-master

mkdir build

cd build

cmake .. 

make -j8

sudo make install

步骤3) 现在进入测试目录编译测试文件, 已echo为例, 请按如下步骤执行命令行操作:

cd /home/user/libwebsockets-master/minimal-examples/ws-server/minimal-ws-server-echo

gcc minimal-ws-server-echo.c protocol_lws_minimal_server_echo.c -o minimal-ws-server-echo -I/usr/local -L/usr/local/lib -lwebsockets

如果万事大吉, 请略过<步骤4>, 直接看<步骤5>

而如果出现以下错误, 请根据<步骤4.1>解决

protocol_lws_minimal_server_echo.c:246:7: error: dereferencing pointer to incomplete type
if (c->api_magic != LWS_PLUGIN_API_MAGIC) {
protocol_lws_minimal_server_echo.c:246:22: error: ‘LWS_PLUGIN_API_MAGIC’ undeclared (first use in this function)
if (c->api_magic != LWS_PLUGIN_API_MAGIC) {

......

步骤4) 解决方法:

    请注意请注意, 需要已经配置了libuv环境. 如果没有配置, 自己配置下, 还是很简单的. 

    4.1) 打开/home/user/libwebsockets-master/CMakeLists.txt文件, 并找到此项: 

option(LWS_WITH_PLUGINS "Support plugins for protocols and extensions" OFF)

    把OFF改成ON, 再根据<步骤2>再次编译libwebsockets, 然后再根据<步骤3>再接着编译测试文件

    如果编译成功, 请直接看<步骤5>, 而如果出现以下另外一种错误, 请根据<步骤4.2>解决

undefined reference to `lws_extension_callback_pm_deflate'

    4.2) 再次打开/home/user/libwebsockets-master/CMakeLists.txt文件, 并找到此项: 

option(LWS_WITHOUT_EXTENSIONS "Don't compile with extensions" ON)

    把ON改成OFF, 再根据<步骤2>再次编译libwebsockets, 然后再根据<步骤3>再接着编译测试文件.

步骤5) 测试:

现在minimal-ws-server-echo编译成功, 然后启动, 使用默认的ip端口, localhost和7681, 使用websocket client测试. 这里提供一个离线的client

链接:https://pan.baidu.com/s/1okT6kjM80mTXBQOItdp_Yw 
提取码:qtsj 

测试结果如下:

linux c websocket开源库libwebsockets的编译和使用

结束:

    如果有同学在编译过程中遇到了其他问题, 可以留言一起讨论解决.