cJSON是基于ANSI C的跨平台JSON解析开源库,支持cmake跨平台编译. 使用cmake也不复杂,以gcc编译为例以下是编译过程。
在上一篇博客《conan入门(四):conan 引用第三方库示例》中我们以cJSON为例说明了如何在项目中引用一个conan 包。那是比较简单的一种编译本机目标代码的应用场景(编译环境是Windows,目标代码也是Windows平台)。在物联应用的大背景下,C/C++开发中跨平台交叉编译的应用是非常广泛的。在使用conan来管理C/C++包(制品库)的环境下,如何实现对交叉编译的支持呢?因为我的工作涉及不少嵌入式平台的开发,conan对交叉编译的支持是我最关心的部分。
我们经常需要从现有二进制文件创建包,比如第三方或供应商提供的C/C++库(只有include和lib),或在引入conan管理包之前手工编译编译好C/C++库。在这种情况下,我们并不需要conan从源代码编译,费时费事或根本不可能。所以以下情况我们可以考虑直接将本地已经编译好的二进制文件生成conan包:
这里选择LuaJit在嵌入式Linux系统使用,LuaJit交叉编译也比较简单,没有第三方库的依赖,直接交叉编译源码即可。
cJSON是基于ANSI C的跨平台JSON解析开源库,在嵌入式应用中使用比较广泛, cJSON支持CMAKE编译,本文以脚本形式提供了使用CMAKE基于VS2015/Windows以及GCC/MinGW的编译过程。
这是常用的方法,通过Lua对字符串进行解析,从而完成JSON的编码及解码。网络上有许多现成的Lua JSON库可以使用。
本文介绍了如何通过GCC和CMake在Linux系统上生成C语言静态库和动态库,并对生成的库进行链接,从而完成一个简单的C语言项目的编译和构建。
既然Qt是跨平台的,那么能不能在嵌入式平台实现一下呢?最近刚好看到,ST官方在开展创客大赛活动,就买了米尔科技的YA157C开发板移植一下。
本文从一个示例开始:我们将创建一个使用cJSON应用程序来说明如何基于CMake 作为构建系统使用Conan无平台差异的引入依赖库。
它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能。
点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看或点个赞,感谢~
cJSON的目标是成为您能够完成工作的“最愚蠢(最便捷)”的解析器。它是一个C文件和一个头文件。
ESP32的SDK(ESP-IDF)本身提供了esp32平台的cmake toolchain文件: esp-idf-v4.4\tools\cmake\toolchain-esp32.cmake 1就是esp32的工具链文件定义样板。如下:
当今云原生世界中两个最热门的轻量级代码执行沙箱/虚拟机是 eBPF 和 WebAssembly。它们都运行从 C、C++ 和 Rust 等语言编译的高性能字节码程序,并且都是跨平台、可移植的。二者最大的区别在于: eBPF 在 Linux 内核中运行,而 WebAssembly 在用户空间中运行。我们希望能做一些将二者相互融合的尝试:使用 WASM 来编写通用的 eBPF 程序,然后可以将其分发到任意不同版本、不同架构的 Linux 内核中,无需重新编译即可运行。
在上一篇文章《WebAssembly 如何演进成为“浏览器第二编程语言”?》中, 我们较为详细地讲述了 WebAssembly 的演变历程,通过 WebAssembly 的演变历程,我们可以对 WebAssembly 的三个优点(二进制格式、Low-Level 的编译目标、接近 Native 的执行效率)有比较深刻的理解。
之前我使用在桌面版本Qt实现了肺炎疫情监控平台:基于Qt的新冠肺炎疫情数据实时监控平台(开源小项目)。既然Qt是跨平台的,正好手里有一块iMX287A的开发套件,含一块4.3寸的显示屏,那么能不能在嵌入式平台实现一下呢?
Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:Web Bench Homepage
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition – December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。(来自“开源中国”资料)。
总结了17个 C/C++业内非常经典的开源项目,能够很好的帮助上手与进阶C/C++项目开发,积累项目经验。
使用cJSON创建JSON字符串 在Linux下,使用C语言编程,开始JSON字符串的创建。我们还是一步步来,逐渐由简单到复制。 1,下载源码 可以从如下网站来下载:https://sourceforge.net/projects/cjson/ 。 2,包含cJSON的源码 下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。只需在函数中包含头文件(#include “cJSON.h”),然后和cJSON.c一起编译即可使用。 3,创建一个键值对
众所周知,JSON是一种轻量级的数据格式,应用广泛。在C/C++应用中也常常作为配置文件或者数据的存储,因此JSON文件的生成和解析是必备知识。
最近需要升级原有服务器的nginx加载逻辑,新的lua脚本需要解析一个远程返回的json格式的结果,原有的luajit并没有带cjson库,需要自己手动安装一下。
之前程序是32位的,切到64位之后,一些隐藏的问题就暴露了。这不,一个由字节对齐导致的挂死问题就出来了。
我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建。然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。
将文件编译为静态库.a # 将cJSON.c编译为cJSON.o, -c只编译不连接 ➜ gcc -c cJSON.c # 组合为静态链接库. 使用cJSON.o创建静态库libcJSON.a ➜ ar -r libcJSON.a cJSON.o # 将静态库作为一个系统共享的静态链接库(lib文件夹) ➜ cp libcJSON.a /usr/local/lib # 此时就可以使用 -l 参数去使用静态库了. ➜ gcc main.c -o main -lcJSON 将文件编译为动态链接库.s
JSON学习-使用cJSON解析 使用cJSON解析JSON字符串 一、为何选择cJSON 我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建。然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。 基于方便引用的考虑,我们希望这个JSON解析库是用C语言实现的。同时,为了避免太过复杂的C源码包含关系,希望最好是一个C文件来实现。通过
cJSON 是一个超轻巧,携带方便,单文件,可以作为 ANSI-C 标准的 JSON 解析器,是一个用C语言编写的简单好用的JSON解析器;它只包含一个C文件和一个头文件,可以非常容易集成到自己工程项目中。
2020,新冠肺炎疫情在全球蔓延,国内得到了有效的控制,最近国内部分地区的疫情形势又紧张起来。
最近工作的一个单片机项目项目,用了一款不知名的芯片,坑爹的开发商提供的编译器中有C++编译器,但是不能正常工作。好在我们的项目是纯C项目不需要C++编译器,只要在项目的cmake脚本中project命令指定为Cproject($NAME LANGUAGE C),这个坑就暂且绕过。
Linux还真是逐步熟悉中,现在才了解到Linux即没有原生的GUI,也没有应用层协议栈,所以要实现HTTP应用,必须利用TCP然后自己封装HTTP数据包。本篇即记录封装HTTP数据包,到心知天气请求天气信息的案例实现过程。
上一篇文章中详细的讲述了cJSON的设计思想,数据结构,以及如何封装json数据,本节我们接着来讲如何封装,以及在实际中常常使用到的内存钩子的使用方法。
上一篇文章我们使用STM32F103 MCU裸机开发的方式实现了疫情监控平台。这次我们玩点高端的,使用RT-Thread Studio来实现同样的功能,一起来看看吧!
在 ESN,我们大量使用 JSON,Python 2.6 自带的那个太慢,所以我们后来使用 simplejson。今时今日 JavaScript 和 JSON 更广泛地使用了,所以我觉得可能这是一个值得我用 C 去优化的领域,而且也可以正明我宝刀未老。
看了cJSON的源码后,惊呼其设计之巧妙,其代码之简洁,其使用之方便!只有两个文件cJSON.h和cJSON.c,非常适合学习C语言中的链表。
第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。
有关注我的朋友可能会知道我的C开发环境是:Notepad++与MinGW相结合,即用Notepad++写代码,用MinGW这个工具包中的gcc编译器进行编译。如:
C - CJSON CJSON 使用介绍 C语言cJSON库的使用,解析json数据格式
上周末加班,这周末休息,有时间整理一篇之前做的基于RT-Thread的疫情监控平台。上一篇文章我们使用STM32F103 MCU裸机开发的方式实现了疫情监控平台。这次我们玩点高端的,使用RT-Thread Studio来实现同样的功能,一起来看看吧!
项目Github地址:https://github.com/DaveGamble/cJSON
Lua之sleep函数的实现 一个不幸的消息是Lua中没有内置sleep函数,我们需要DIY。有4种方法可以实现sleep函数,如下: 方法1 –在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源,强烈不推荐使用哦 function sleep(n) local t0 = os.clock() while os.clock() - t0 <= n do end end 方法2 –调用系统的sleep函数,不消耗CPU,但是Windows系统中没有内置这个命令(如果你又安装Cyg
初学者在刚开始学习 OpenResty 的时候,肯定要搭建一个环境,通常来说,我们推荐直接使用官方提供的二进制包,比如 CentOS 的话,直接用 yum 安装即可,不过二进制包有一个限制是它的各种编译选项都是固定的,没办法修改,比如现在新版的二进制包缺省开启了 GC64,用来支持大内存,但是目前的火焰图工具并不支持 GC64,报错:
在之前的博客《conan入门(四):conan 引用第三方库示例》中我们以cJSON为例说明了如何在项目中引用一个conan 包。
snprintf(report_buf, sizeof(report_buf), REPORT_DATA_TEMPLATE, lux);
直接使用 go get -u -d github.com/wandoulabs/codis 来获取codis源码
在上周的文章中介绍了一款因作者想要学习Linux而动手DIY的终端设备V3S-PI,
Lua是一种轻量、小巧的脚本语言,用标准C语言编写并以源代码形式开发。设计的目的是为了嵌入到其他应用程序中,从而为应用程序提供灵活的扩展和定制功能。
cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。
【转载请注明出处】:https://cloud.tencent.com/developer/article/1628590
领取专属 10元无门槛券
手把手带您无忧上云