我在编译过程中出现了本文步骤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 -lwebsockets

如果万事大吉, 请略过, 直接看

而如果出现以下错误, 请根据解决

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, 再根据再次编译libwebsockets, 然后再根据再接着编译测试文件

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

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, 再根据再次编译libwebsockets, 然后再根据再接着编译测试文件.

步骤5) 测试:

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

链接:https://pan.baidu.com/s/1okT6kjM80mTXBQOItdp_Yw

提取码:qtsj

测试结果如下:

结束:

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

linux socket 开源库,linux c websocket开源库libwebsockets的编译和使用-Go语言中文社区...相关推荐

  1. xshell下载mysql到本地文件_在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)-Go语言中文社区...

    在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹) 1 列出所有需要copy的sh文件 -bash-4.1$ ll /mysqllog/osw/*.sh ...

  2. 博通蓝牙驱动linux,基于Android8.1的博通bcm89342蓝牙驱动的驱动移植记录-Go语言中文社区...

    说明 本文档是基于Android 8.1版本的一款博通蓝牙的驱动移植全过程记录.本驱动是通过/dev/ttyS2和蓝牙进行通信.因为较android以前的版本有很大变化尤其是上层关于蓝牙协议栈的部分, ...

  3. linux socket读写函数,Linux网络编程入门

    第一个函数是socket函数. socket函数的Linux头文件以及函数定义如下: #include int socket(int domain, int type, int protocal); ...

  4. linux虚拟内存api,Linux虚拟内存空间分布-Go语言中文社区

    平常总说cpu的位数,其实说的是cpu一次能运算的最长整数的宽度,既ALU(算术逻辑单元)的宽度. cpu的位数也是数据总线的条数 数据总线:数据线的总和,数据线就是cpu与内存进行数据传递的通道,一 ...

  5. qt程序部署在linux,Qt应用打包发布,部署真正的Qt程序LinuxWindows-Go语言中文社区...

    最近在发布Qt应用时遇到了一些困难,Windows还好,在Linux上面发布遇到了不少的麻烦(实际Linux应该简单才对),经过在网络搜索发现帖子不少,但都比较片面,现把Qt应用程序在Linux&am ...

  6. go开发linux下桌面程序,使用FMXlinux 开发linux 桌面应用-Go语言中文社区

    自从delphi 10.2 开始正式支持linux  开发来,大家一直关心为什么官方没有使用FMX来支持LInux 的桌面开发? 其实原因无非就几点: 1.Linux 大部分是应用还是服务端的,桌面应 ...

  7. linux 安装centos7,linux CentOs7 安装 Autojump 方便高效省事-Go语言中文社区

    一.简介 autojump是一个命令行工具,它允许你可以直接跳转到你喜爱的目录,而不用管你现在身在何处. 有多种安装手法,但我只推荐我接下来介绍的一种: 首先确定你的系统开启EPEL保证有软件包源(在 ...

  8. zynq Linux软件中断,zynq7010 在 linux 系统下 irq_f2p 中断驱动-Go语言中文社区

    1 说明 zynq 平台,需要用到 pl (FPGA)端发送中断给 ps端(ARM),发送的中断名称为 IRQ_F2P[15:0],该中断一共有16个,中断号分别为 61-68, 84-91.本文针对 ...

  9. kail linux dns欺骗,Kali Linux渗透测试-Ettercap DNS欺骗攻击-Go语言中文社区

    Kali Linux渗透测试-Ettercap DNS欺骗攻击 DNS欺骗攻击基于中间人攻击.攻击者更改受害者从DNS服务器查询的域名解析结果,给受害者发送恶意网页或者钓鱼网页-浏览器依然显示正常的u ...

  10. 服务器系统goha,推荐一个轻量级且高性能的 Golang 网络库:gnet-Go语言中文社区...

    image Github 主页 博客原文 欢迎大家围观~~,目前还在持续更新,感兴趣的话可以 star 一下暗中观察哦. 简介 gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络 ...

最新文章

  1. 【青少年编程】【一级】小狗散步
  2. 通过简单的线性回归理解机器学习的基本原理
  3. fixed 定位 苹果手机输入框触发时内容全部隐藏
  4. oracle12c ora 12547,Oracle 12c DBCA出现PRCR-1079 ORA-12547 CRS-5017
  5. 信息学奥赛一本通(1399:甲流病人初筛)
  6. android intent actionview,android – 检查Intent.ACTION_VIEW上的用户操作
  7. 用OpenCV实现Otsu算法
  8. pyinstaller cx_oracle,使用pyinstaller打包使用cx_Oracle模块的程序出现The specified module could not be found的问题...
  9. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中
  10. Spring框架的本质:3了解一点儿JavaConfig
  11. Xshell是做什么用的?Xshell使用教程分享
  12. iphone7一晚上掉电50%_苹果7待机一晚掉电多少
  13. npx mrm lint-staged 报错
  14. Evision显示器无法设置1440*900分辨率的问题解决
  15. 小波包MATLAB实现
  16. php 正则匹配小括号
  17. IO流的详解,彻底了解IO流
  18. 谈谈后端业务系统的微服务化改造
  19. Android 反编译apk文件
  20. 从Internet说起

热门文章

  1. 第8章 多项式回归与模型泛化 学习笔记上
  2. Unity直接调用Python脚本
  3. Atitit 搜索蓝牙设备 powershell的实现 java noede.js python 先用脚本语言python nodejs,不好实现。。Java 也不好实现。。 Netcore可以,
  4. Atitit 数据库的历史与未来 目录 1.1. 两个对于数据库强需求的行业。电信 金融 1 1.2. 艾提拉分析 对数据库强需求行业金融 1 2. 数据库历史 2 2.1. ,上个世纪50,6
  5. Atitit webdav应用场景 提升效率 小型数据管理 目录 1.1. 显示datalist 1 1.2. Ajax填充数据 1 1.3. 编辑数据 2 1.1.显示datalist
  6. 银联支付接口常见错误总结
  7. 能力的变迁:能力包括哪些方面
  8. 换手率:为什么美国人不爱频繁申赎基金?
  9. 高盛也上GitHub了!让交易员赚取10亿美元的神秘“利器” 即将开源
  10. 双管理人模式下的契约型私募基金实用发行指南