推荐一些嵌入式、C/C++的开源库和项目

2023-05-16

前言

想用代码实现一个功能时,我们可以先看看是否有前辈已经实现了该功能,并且开源分享在网上。一般我们自己造出来的轮子的可用性基本上是很难和大神们造的轮子相比的。

因此多了解一下优秀的开源库的使用,可以让我们编码的时候少走很多弯路。

之前我就做了一个系列博客,关于分享C、C++的开源库。文章如下:

【C语言开源库】在Clion上使用开源库cJSON

【C语言开源库】C语言必备实用第三方库Melon(包括数据结构算法)

【C语言开源库】C语言开源库zlog的使用

【C语言开源库】在CLion上使用一个轻量的适合嵌入式系统的环形缓冲库ring buffer 和C语言Unity单元测试框架

【C语言开源库】 一个只有500行代码的开源http服务器:Tinyhttpd

【C++开源库】Windows和linux下好用的串口通讯API库

很多其实都是浅尝辄止,但阅读使用这些开源库可以让我们学习优秀的编码习惯和编码方式,可以为我们用代码实现需求积累武器库。


推荐一些嵌入式、C/C++的开源库和项目

本人最近在学习数据结构的课程,在过程中发现用C语言来实现各种数据结构类型的时候很难做到真正意义上的通用的数据结构,于是在网上搜罗了一些所谓的C语言通用数据结构库,在此也将这些数据结构库一一罗列,方便大家查找和使用。C语言没有像C++那样的STL库,语言本身并不是一种真正意义上的高级语言,实现项目中真正用到的算法中的C语言的数据结构也很少,要么是按照自己的需求来实现,要么一般都用C++来完成大型的项目工程,C++有现成的库来开发,可以缩短工程的时间和提高效率。但是C语言仍然保持在编程语言占有率的前列,这其实依赖于在底层系统级开发应用中扮演着不可替代的作用。最新的开发者编程语言的情况可以查看这篇文章:

http://www.infoq.com/cn/articles/stack-overflow-report

比较大型的C语言通用数据结构的库有(数据结构只是其中的一小部分):

  1. Gnulib - The GNUPortability Library相关的链接:
    

http://www.gnu.org/software/gnulib/

2.ApachePortable Runtime (APR) project相关的链接:

http://apr.apache.org/

  1. Glib相关链接: https://developer.gnome.org/glib/unstable/

下面是一些相对比较小的C语言数据结构和算法的库

  1. SGLIB - A Simple Generic Library for C 相关链接:http://sglib.sourceforge.net/

  2. libcstl-2.3.0相关链接:http://libcstl.org/

  3. GDSL - The Generic Data Structures Library 相关链接:

http://home.gna.org/gdsl/

  1. BSD Library 相关链接:

http://www.manpagez.com/man/3/queue/ 这类数据结构通常封装在系统级的内核目录下,比如:sys/queue.h等。

1、OS

鸿蒙OS:一款面向全场景的开源分布式操作系统。

RT-Thread:一款小而美的物联网操作系统。

TencentOS tiny:一款面向物联网领域开发的实时操作系统。

freertos:一个轻量级的操作系统。

µC/OS :一个功能齐全的嵌入式操作系统。

mbed-os :ARM自己打造、主打IoT的一整套软件解决方案 。

BabyOS:专为MCU项目开发提速的代码框架 。

LuatOS :LuatOS是运行在嵌入式硬件的实时操作系统,只需要少量内存的flash空间就能运行,用户编写lua代码就可完成各种功能。

Contiki-OS:一个小型的,开源的,极易移植的多任务操作系统。

DJYOS:都江堰操作系统。

klite :简洁易用的嵌入式操作系统内核。

lmosem :一个完全从第一行引导代码开始编写,基于ARM平台,支持多进程、多CPU、内存管理、文件与设备管理的全32位操作系统内核。

freenos:FreeNOS微内核操作系统。

2、实用库/框架

cJSON:一个基于C语言的轻量级的JSON解析库。

jsmn:一个小巧的基于C语言的JSON解析库。

MultiTimer :一个软件定时器扩展模块。

MultiButton:一个小巧简单易用的事件驱动型按键驱动模块。

SmartTimer :一个轻量级的基于STM32的定时器调度器 。

CmBacktrace :一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪库。

EasyLogger:一款超轻量级、高性能的 C/C++ 日志库。

EasyFlash:一款开源的轻量级嵌入式Flash存储器库 。

SFUD:一款开源的串行 SPI Flash 通用驱动库。

lw_oopc:轻量级的C语言面向对象编程框架。

PLOOC:受保护的低开销面向对象编程。

cmd-parser:一个非常简单好用的命令解析器。

mqttclient:一个省资源、高稳定的MQTT客户端。

NorthFrame :一个单片机极简图形化状态机框架 。

letter-shell:一个功能强大的嵌入式shell。

pigweed:谷歌开源的嵌入式目标库(模块)集合。

lwrb:一个轻量级通用环缓冲区管理器库。

cQueue :使用ANSI C 编写的消息队列功能函数。

Unity:一个轻量级的、适合嵌入式的测试框架。

Embedded Unit:是个纯标准c构建的单元测试框架。

CuTest :一款微小的C语言单元测试框, 全部代码加起来不到一千行。

cmockery:谷歌C单元测试框架。

googletest:谷歌C++测试框架。

znfat :振南fat,国产嵌入式文件系统方案 。

libu:一个C语言写的多平台工具库。

LWIP:一个小型开源的TCP/IP协议栈 。

SQLite :一个开源的嵌入式关系数据库。

OpenBLT:一种开源引导加载程序。

Linux Lab :Linux 内核实验室,基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境。

airkissOpen :腾讯airkiss协议解析库 。

nr_micro_shell :shell for MCU,单片机命令行交互。

FlexibleButton:FlexibleButton 是一个基于标准 C 语言的小巧灵活的按键处理库。

mbedtls :一个开源、便携,易于使用,可读的和灵活的SSL库。

mosquitto或mosquitto(下载速度快):一个开源的MQTT代理。

inih:C 语言编写的 INI 文件解析器。

QP:QP实时嵌入式框架。

MS-RTOS:Micro Safe RTOS 。

protobuf-c:protobuf-c。

eepromfs:基于EEPROM的简易类文件的数据读写库 。

gear-lib :适用于IOT/嵌入式/网络服务开发的C库 。

mult_timer :一个Linux下的超级精简的多重定时器 。

EFSM :是一个基于事件驱动的有限状态机 。

3、GUI相关

GuiLite:大道至简 - 5千行/仅头文件/全平台GUI库 。

yoxios:基于Linux开发的轻量级物联网系统和硬件平台。

ToughGFX:一个C++编写的GUI软件框架 。

emwin:一个老牌GUI库。

littlevGL :一个免费的开源图形库。

野牛 LittlevGL demo:基于野牛开发板的 LittlevGL demo 程序 。

MonoGUI :一个黑白图形用户接口系统 。

MiniGUI:一个快速、稳定、跨操作系统的GUI。

QT:跨平台的应用程序和用户界面框架。

Gtk:一个用于创造图形用户接口的图形库。

AWTK:是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架 。

4、物联网、智能家居

HomeAssistant :一款基于 Python 的智能家居开源系统。

Domoticz :一个开源的智能家居系统 。

Kaa IoT Platform:功能丰富的开放和高效的物联网云平台。

RT-Thread IoT SDK :基于RT-Thread IOT开发板的各类例程。

从零打造物联网:一份适合嵌入式开发人员学习的web开发教程。

5、实例/项目/软硬结合

qt_2019_ncov:基于Qt/C++实现的新冠肺炎疫情监控平台。

H7-TOOL_STM32H7_App :H7-TOOL 多功能开发工具。

DAPLink/CMSIS DAP:一个调试器, 集成下载、调试和USB虚拟串口。

mcush:MCU shell。

DoST:Linux 下开发 STM32 。

Crazepony:Crazepony开源四轴飞行器。

MiniQ :一个迷你四轴飞行器。

LiPow-Firmware:基于STM32G0采用USB type-C供电的开源锂电池充电器。

Avem:一个轻量级无人机飞控。

SoftWareSerial:一个STM32 IO口模拟实现软件串口程序。

串口ISP程序:一个stm32串口ISP程序。

DSO_Nano :一个手持示波器。

DSView:一个跨平台的逻辑分析仪。

MCU-Development:基于51、430、STM32F10X、STM32F407X、T4MC123G平台的各常见硬件模块demo。

Arduino :开源电子原型平台。

EWAHBoolArray:bitmap算法。

6、学习资料/资源/工具/网站

100ask download:百文网资料下载中心。

armfly:安富莱/硬汉嵌入式论坛。

fire download:野火资料下载中心。

openedv download:正点原子资料下载中心。

野火:野火电子论坛。

正点:正点原子论坛。

ST:ST中文社区。

NXP社区:恩智浦论坛。

Linux:Linux内核官网。

Linux源码:可在线阅读Linux内核源码。

Buildroot:buildroot源码。

Debian:Debian官网。

Ubuntu:Ubuntu官网。

荔枝派:荔枝派指南。

清华镜像站:清华大学开源软件镜像站。

中科大镜像站:中国科技大学镜像站。

u-boot:u-boot源码下载页面。

bear-pi:小熊派demo。

宅学部落:一个Linux、编程语言、内核、驱动开发学习网站。

单片机教程网:单片机基础、设计实例、论坛。

GNU:GNU官网。

ChinaUnix:Linux/Unix相关。

PyQt5:PyQt5教程。

qter:QT开源社区。

git手册:git学习手册。

开源项目风格:Google 开源项目风格指南 (中文版)。

电子世家:一个电子类导航网站。

21ic:21IC中国电子网。

芯路恒电子:小梅哥博客、FPGA论坛。

嵌入式开发者社区:创龙论坛。

micropython:micropython中文网。

泰晓科技:Linux相关。

电堂科技:STM32相关。

源代码使用示例聚合器:从超过100万个开源项目搜索CPP代码示例。

KST-51 :《手把手教你学51单片机》 。

原子哥:专注电子技术教学。。

digoboy:地瓜派视频网。

c.biancheng:C语言中文网。

open-c-book :《C语言编程透视》。

PyQt5:PyQt5在线教程。

open-shell-book:《Shell 编程范例》 。

software_unit_test:《软件单元测试入门与实践》。

kerneltravel:Linux内核之旅。

蜗窝科技:慢下来,享受技术。

bookstack:书栈网。

wireshark:抓包工具下载链接。

MobaXterm:一个好用的终端软件。

Stduino:一款面向32位处理器快速入门学习的集成开发平台 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

推荐一些嵌入式、C/C++的开源库和项目 的相关文章

随机推荐

  • PHP + Apache + Mysql集成环境部署及简要教程

    文章目录 PHP运行原理和机制PHP 的设计理念及特点PHP 的四层体系1 Zend 引擎 xff08 核心 xff09 2 Extensions xff08 扩展 xff09 3 SAPI xff08 服务器应用程序编程接口 xff09
  • 不同行业公司工资对比,计算机YYDS

    一 纳税标准 推荐一篇文章 xff1a 扣除社保 公积金年后 社保和公积金的扣除比例是22 左右 xff0c 工资在扣完社保和公积金的基础上再进行个税的扣除 税前19 2w xff0c 税前平均每月1 6w xff0c 扣除社保 公积金后年
  • 对实时操作系统多任务的一些理解

    一 什么是优先级反转 优先级反转 xff0c 是指在使用信号量时 xff0c 可能会出现的这样一种不合理的现象 xff0c 即 xff1a 优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源 高优先任务由于因资源缺乏而处
  • 【LeetCode刷题日记】数组和链表性质总结

    一 数据结构的存储方式 数据结构的存储方式只有两种 xff1a 数组 xff08 顺序存储 xff09 和链表 xff08 链式存储 xff09 这句话怎么理解 xff0c 不是还有散列表 栈 队列 堆 树 图等等各种数据结构吗 xff1f
  • C语言面向对象实现滑动均值滤波与平均值滤波

    文章目录 一 背景二 平均值滤波1 算法介绍2 代码实现3 实例 三 滑动均值滤波 xff08 Moving Average xff09 四 C语言面向面向对象实现滑动均值滤波 一 背景 在实际的数据采集中 xff0c 我们经常会取多次数据
  • 【LeetCode刷题日记】常用算法基础和理解及运用

    在我们LeetCode刷题过程中 xff0c 如果我们只是了解数据结构 xff08 数组 xff0c 链表 xff0c 数 xff09 的使用方法 xff0c 那我们在面对复杂的题目时 xff0c 是很难很好的解决问题的 xff0c 因此我
  • 【LeetCode刷题日记】数组类题目常见题型

    文章目录 303 区域和检索 数组不可变 https leetcode cn com problems range sum query immutable 304 二维区域和检索 矩阵不可变 https leetcode cn com pr
  • 【LeetCode刷题日记】队列类题目常见题型

    文章目录 225 用队列实现栈 https leetcode cn com problems implement stack using queues 剑指 Offer 09 用两个栈实现队列 https leetcode cn com p
  • 【LeetCode刷题日记】栈类题目常见题型

    文章目录 20 有效的括号 https leetcode cn com problems valid parentheses 225 用队列实现栈 https leetcode cn com problems implement stack
  • 回顾 nexus maven-snapshots 401 Unauthorized

    1 修改maven settings 文件 私库的用户名和密码 lt server gt lt id gt maven releases lt id gt lt username gt admin lt username gt lt pas
  • 【LeetCode刷题日记】树类题目常见题型

    文章目录 树基础知识 104 二叉树的最大深度 https leetcode cn com problems maximum depth of binary tree 102 二叉树的层序遍历 https leetcode cn com p
  • 【LeetCode刷题日记】常用算法基础和理解及运用

    文章目录 递归和迭代递归迭代迭代和递归的关系和区别 xff08 敲黑板 xff09 二分法典型的二分法二分法的变种找出第一个与key相等的元素的位置找出最后一个与key相等的元素的位置查找第一个等于或者大于Key的元素的位置查找第一个大于k
  • 编程常用快捷键,学完保证和大神一样件字如飞

    每次看到一下大神在编程时 xff0c 那打字的速度简直是恐怖 xff0c 而且几乎不会用到鼠标 xff0c 手不用离开键盘 xff0c 因此打字效率也高 而菜鸡的我 xff0c 每次写代码时 xff0c 有时候要在不同行之间跳动 xff0c
  • Clion中编译C/C++混合代码

    今天在Clion中编译C C 43 43 语言时 xff0c 出现了一个不容易发现的错误 项目文件包括三个文件 三个文件其实都是用C语言写的 xff0c 只是第一个文件的后缀是 cpp 如果在这种情况下直接编译 xff0c 会出现一下报错
  • 【LeetCode刷题日记】[447. 回旋镖的数量](https://leetcode-cn.com/problems/number-of-boomerangs/)

    LeetCode刷题日记 447 回旋镖的数量 题目 给定平面上 n 对 互不相同 的点 points xff0c 其中 points i 61 xi yi 回旋镖 是由点 i j k 表示的元组 xff0c 其中 i 和 j 之间的距离和
  • 【LeetCode刷题日记】[162. 寻找峰值]

    LeetCode刷题日记 162 寻找峰值 题目 峰值元素是指其值严格大于左右相邻值的元素 给你一个整数数组 nums xff0c 找到峰值元素并返回其索引 数组可能包含多个峰值 xff0c 在这种情况下 xff0c 返回 任何一个峰值 所
  • 基于Junit4+Mockito+PowerMock实现Controller+Service的单元测试

    一 导入的依赖 lt test gt lt dependency gt lt groupId gt org mockito lt groupId gt lt artifactId gt mockito core lt artifactId
  • 嵌入式编程之状态机

    文章目录 1 什么是状态机 xff1f 2 状态机编程的优点 1 提高CPU使用效率 2 逻辑完备性 3 程序结构清晰 3 状态机的三种实现方法switch case 法表格驱动法函数指针法小节 摘要 xff1a 不知道大家有没有这样一种感
  • VxWorks几种常用的延时方法

    转载于 xff1a https www vxworks net app 144 time facilities of vxworks 自用 VxWorks系统提供灵活多样的定时器机制 xff0c 有多种接口可以方便地实现延时 xff0c 文
  • 推荐一些嵌入式、C/C++的开源库和项目

    前言 想用代码实现一个功能时 xff0c 我们可以先看看是否有前辈已经实现了该功能 xff0c 并且开源分享在网上 一般我们自己造出来的轮子的可用性基本上是很难和大神们造的轮子相比的 因此多了解一下优秀的开源库的使用 xff0c 可以让我们