
开源lib
沉迷WebRTC
想在音视频实时通信行业一直深耕下去的女孩,请多多包涵。
展开
-
调用MQTTClient_connect返回-8
1、问题描述使用开源库paho.mqtt.c时,其接口MQTTClient_connect返回-8;查看源文件对应的返回值具体为:MQTTCLIENT_BAD_STRUCTURE(-8)2、根据分析结论如下:使用的libpaho-mqtt3c.so和头文件不匹配,头文件是下载的1.3.9版本的paho.mqtt.c,而库是使用其他编译的;3、解决办法下载自己需要版本的paho.mqtt.c源码,重新编译后,使用include+lib...原创 2022-05-25 14:10:25 · 1811 阅读 · 0 评论 -
【交叉编译六】paho.mqtt.c-1.3.9
在海思平台编译mqtt操作如下:【不支持OpenSSL】cmake ../ -DPAHO_BUILD_STATIC=TRUE -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin/arm-hisiv500-linux-gcc -DCMAKE_INSTALL_PREFIX=/data1/heyan18/work/third_lib/paho.mqtt.c-1原创 2022-02-17 16:03:35 · 1389 阅读 · 0 评论 -
【交叉编译 五】OpenH264
0、背景OpenH264是一个编解码器,支持H.264编码和解码。它适合用在实时应用程序中,比如使用 WebRTC。1、下载源码git clonehttps://github.com/cisco/openh264.githttps://github.com/cisco/openh264/releases2、Linux平台解压编译设置环境变量BUILD_LIBS=${PWD}/build_linuxexport PATH=${BUILD_LIBS}/bin:${PATH}.原创 2021-08-23 20:55:28 · 1195 阅读 · 1 评论 -
Mongoose之开源web服务器
1、Mongoose介绍Mongoose 是一款嵌入式 web服务器。使用C语言编写,它可以很容易的嵌入到其他平台或是程序中,并为其提供了web接口。它为客户端和服务器模式实现TCP,UDP,HTTP,WebSocket,CoAP,MQTT的事件驱动的非阻塞API。内置协议:· 普通TCP,普通UDP,SSL / TLS(单向或双向),客户端和服务器· HTTP客户端和服务器· WebSocket客户端和服务器· MQTT客户端和服务器· CoAP客户端和服务器· DNS客户端和服务器原创 2021-02-19 17:56:11 · 1870 阅读 · 0 评论 -
【交叉编译四】libzbar 二维码识别库
1.将zbar源码移植到linux arm or mips架构设备上。(君正平台)2.打开摄像头并运行zbar算法进行二维码识别。源码:wgethttp://downloads.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.gz解压后执行:./configure --prefix=$(pwd)/ISVP_lib --enable-shared --enable-static --without-imagemagick --wit.原创 2020-12-18 15:29:48 · 1212 阅读 · 3 评论 -
【交叉编译三】nghttp2编译
nghttp2 是一个用 C 实现的 HTTP/2 库,支持 h2c。如下是君正平台的交叉编译内容。1、下载源码:https://github.com/nghttp2/nghttp2 git clone https://github.com/nghttp2/nghttp2.git2、执行如下结果cd nghttp2autoreconf -i但是报错如下:主要原因是 没有配置正确aclocal的库LIBTOOL.m4的路径main::scan_file() call...原创 2020-12-16 14:18:54 · 2670 阅读 · 0 评论 -
【交叉编译一】CMake编译选项
1、常用的CMake选项具体含义如下:PROJECT(目标名称)ADD_DEFINITIONS(-g) 添加了之后,就相当于在编译的时候加上了-g选项ADD_DEFINITIONS(-Os) 添加了之后,就相当于在编译的时候加上了 -Os选项ADD_DEFINITIONS(-D DEBUG_WARN) 将在gcc命令行添加DEBUG_WARN宏定义SET(CMAKE_CXX_FLAGS "") 编译器选项设置SET(CMAKE_...原创 2020-12-10 10:04:05 · 3721 阅读 · 0 评论 -
【交叉编译二】libcoap
libcoap是一个coap协议的lib库,CoAP协议基于REST 构架。为了克服HTTP对于受限环境的劣势,CoAP既考虑到数据报长度的最优化,又考虑到提供可靠通信。一方面,CoAP提供URI,REST 式的方法如GET,POST,PUT和DELETE,以及可以独立定义的头选项提供的可扩展性。另一方面,CoAP基于轻量级的UDP协议,并且允许IP 多播。如下是我们编译君正平台的过程...原创 2020-11-25 14:02:41 · 1142 阅读 · 0 评论 -
【交叉编译一】openssl-1.1.1编译
君正平台1、源码包下载https://www.openssl.org/source/old/1.1.1/在https://www.openssl.org/source/下载openssl-1.1.1源代码2、进入目录# tar zxvf openssl-1.1.1.tar.gz # cd openssl-1.1.13、执行./config no-asm no-sse2 no-ssl3 no-zlib no-bf no-camellia no-cast no-cms no-原创 2020-09-02 15:06:19 · 2768 阅读 · 1 评论 -
wolfssl替换openssl
在嵌入式工程中,为了实现一个小的功能,引用了一个openssl,编译生成的固件太大了,flash装不下了。而wolfssl在满足基本需求的同时,又能大大减小固件的大小。wolfssl以前称为cyassl,它提供了一个针对嵌入式和rtos环境的嵌入式ssl/tls库。它具有完全的客户端和服务器支持,具有相互认证,并且可以在各种平台上使用,它非常容易编译。wolfssl 除了本地API之外,wol...原创 2019-09-23 15:58:40 · 3209 阅读 · 0 评论 -
使用-section等参数实现对库的裁剪,从而减小程序体积
在实际的项目里面,产品中除去系统加载使用的空间外,留给具体的功能应用程序的空间较小,因此需要对应用程序用到的库进行裁剪。比如在实际的项目中,应用程序和库一共14M,最后进行裁剪,减少了6-7M对于空间有限,使用的库较多(依赖的第三方开源库openssl等)占用体积较大,我们如果使用动态库(.so)显然不适合,因此我们可以使用静态库(.a),但是这样还不够,依赖的库中有很多实现的函数,但是应用...原创 2019-02-15 18:06:42 · 1995 阅读 · 1 评论 -
HTTP请求支持keep-alive
1、HTTP短连接 &长连接所谓短连接,就是每次请求一个资源就建立连接,请求完成后连接立马关闭。每次请求都经过“创建tcp连接->请求资源->响应资源->释放连接”这样的过程。所谓长连接(persistent connection),就是只建立一次连接,多次资源请求都复用该连接,完成后关闭。2、实现HTTP keep-alive(1)客户端要支持:clie...原创 2019-05-16 11:04:55 · 1995 阅读 · 0 评论 -
LibreSSL替代OpenSSL
2016 年 3 月初 OpenSSL 再次爆出与 2014 年的心脏出血(Heartbleed)同样严重的新漏洞——溺亡(DROWN)!在获悉这一消息的时候第一时间我去看 LibreSSL 有没有受影响,正如所料——没有(见下图)!这让我觉得 LibreSSL 取代 OpenSSL 更加必要。关于 DROWN 溺亡漏洞如果还没了解过,可以参考:https://www.openssl.org/ne...转载 2018-05-31 19:50:27 · 7815 阅读 · 0 评论 -
移植openssl到32位的mips核心板上的详细步骤及遇到的问题解决
概述:因工作需求,需要移植openssl开源库到mips架构的核心板上。所以,就开始移植吧。上位机环境:ubuntu14.04 64位 核心板: mips linux 32位1,openssl移植。 先下载源码,这是开源库直接去官网自己下载就行啦。我下载的openssl-1.1.0g版本。然后参考这篇博客来进行移植。 我们进入源码目录,执行conf...转载 2018-05-31 20:53:19 · 822 阅读 · 0 评论 -
libcurl使用时疑难问题【如:文件下载】
场景:1. 下载过程中,遇设备突然断网,在使用libcurl提供的API时,出现阻塞不返回的情况,影响了后续的业务。问题: curl_easy_perform是阻塞的方式进行下载的, curl_easy_perform执行后,程序会在这里阻塞等待下载结束(成功结束或者失败结束).此时若正常下载一段时间后,进行网络中断, curl_easy_perform并不会返回失败,而是阻塞整个程序...原创 2018-11-08 20:08:30 · 2352 阅读 · 0 评论 -
TinyXml2解析xml用法例子
1、认识在使用之前,先大致了解一下TinyXml2结构,只有清楚地知道这些类都指什么内容,那么在解析任何xml时,都可以很好利用TinyXml2中提供的API。比如如下的xml:<?xml version="1.0" encoding="UTF-8"?><phonebook> <!--one item behalfs one contacted...原创 2018-12-25 14:44:40 · 1057 阅读 · 0 评论 -
使用libcurl遇到的坑
1、当断网或者网络较差,上传文件、下载文件或者和HTTP请求等出现死锁需要设置一些超时等参数,如下:curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L); /* abort if slower than 1 bytes/sec during 6 seconds */curl_easy_setopt(curl, CURLOPT_L...原创 2019-01-25 17:16:06 · 3189 阅读 · 0 评论 -
autogen.sh 的使用
在linux下面的大型工程很多都是makefile管理的,但是随着工程越来越大,makefile编写又成了一个大工程,这个时候出现了两个比较流行的工具,cmake和configure,configure又衍生出来一套automake。当我们下载第三方开源库时,我们一般使用configure和makefile,而今天在编译cyassl-master时,发现目录中没有现有的configure文件或...原创 2019-06-15 17:30:00 · 10189 阅读 · 4 评论 -
HTTP之put/post请求头中的Expect:100-continue
在使用curl封装的HTTPClient时,在上传文件的put方法中,通过抓包抓包数据分析,发现在每次真正传输数据之前都必须要收到Server端的响应:HTTP/1.1 100 Continue,这无疑增加了请求的时间;使用 curl 发送 POST 请求时,如果 POST 数据大于 1024字节,curl 默认行为 如下:先追加一个Expect: 100-continue请求头信息,...原创 2019-07-02 15:30:30 · 3719 阅读 · 0 评论 -
通过https发请求时出现“curle_out_of_memory”错误
在使用libcurl封装的HTTPClient,使用https(443端口)发请求时,遇到返回CURLE_OUT_OF_MEMORY,经过验证发现原因如下:1、在初始化curl时,有且仅有一次,使用接口:CURLcode ret_code = curl_global_init(CURL_GLOBAL_SSL);2、在程序退出时,有且仅有一次,使用接口:curl_global_cleanup...原创 2019-07-26 17:41:14 · 3896 阅读 · 2 评论 -
Linux编译libcurl依赖openssl和cares
在实际的应用中,我们使用libcurl来封装HttpClient,并且需要满足http,https,以及客户端指定DNS服务器的地址,那么我们需要使得libcurl依赖openssl以及cares。1、下载源码。2、解压后进入目录,新建两个目录;(1)mkdir deps ; 进入deps,新建include和lib,用于存放编译依赖库的头文件和相应的静态库;(2)mkdir l...原创 2019-08-05 10:13:42 · 3559 阅读 · 0 评论 -
libsrtp 编译测试方法
libsrtp 编译测试说明libsrtp 是 SRTP(Secure Realtime Transport Protocol) 安全实时传输协议的开发包。可以在https://github.com/cisco/libsrtp里下载源码进行编译。1、 Linux环境源码下载wget https://github.com/cisco/libsrtp/archive/maste原创 2017-06-30 17:46:05 · 2901 阅读 · 0 评论