我在编译过程中出现了本文步骤4.1和4.2所解决的两个问题, 如果你也出现了相同的问题, 请根据4.1和4.2解决, 如果没有出现, 请略过步骤4. 现步骤如下:
步骤1) 下载解压, github地址如下:
步骤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
测试结果如下:
结束:
如果有同学在编译过程中遇到了其他问题, 可以留言一起讨论解决.