zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

嵌入式相关开源项目、库、资料------持续更新中(转载)

嵌入式项目开源 更新 相关 转载 持续 资料
2023-09-27 14:21:08 时间

嵌入式相关开源项目、库、资料------持续更新中(转载)

github摘录网址:  https://github.com/zhengnianli/EmbedSummary

gitee摘录网址:            https://gitee.com/zhengnianli/EmbedSummary

2022.05.10

   
  学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言、单片机、开源项目、物联网、操作系统、Linux等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资料库。有好的嵌入式相关资源的朋友欢迎做贡献,利人利己。以下为最新资料汇总:
 

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微内核操作系统。

ros: 机器人操作系统。

openwrt文档:

Zephyr:Zephyr 内核是一个内存占用极低的内核,它主要设计用于资源受限系统:从简单的嵌入式环境传感器、LED 可穿戴设备,到复杂的智能手表、IoT 无线网关。

更多资源敬请期待......

2、实用库/框架

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

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

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

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

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

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

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

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

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

nanomsg: 轻量型分布式消息总线.

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库。

mosquittomosquitto(下载速度快):一个开源的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 : 是一个基于事件驱动的有限状态机 。

EasyX:一个免费的图形库。

tbox:一个用c语言实现的跨平台开发库。

ZBar:二维码扫描工具和开发包.

FFmpeg:多媒体处理工具库.

libnabo:是一个快速为低维度空间提供K最近邻居算法库。它提供了一个干净的,传统的无标量类型无关的C ++模板API。

Data Structure & Algorithm Library (DSAL):是一个经典的数据结构和算法库。

FLINT:是一个数论库,用C语言编写,它包括一个非常快的多项式算法库。

LibMMSeg: 中文分词软件包 。

CDS: CDS是一个 C++ 模板库,包含 lock-free and fine-grained 算法。

hashlib++:是一个简单易用的用来生成 checksum 算法,或者成为 “哈希” 的 C++ 库,可用来生成 MD5 和 SHA1 哈希算法。

libcstl:libcstl是使用c语言编写的一个通用的数据结构和常用的算法库,它模仿SGI STL的接口和实现,支持vector,list,deque等等常用的数据结构,同时还支持排序,查找,划分等常用的算法,此外libcstl也包含迭 代器的类型,它作为容器和算法之间的桥梁。libcstl为C语言编程中的数据管理提供了便利。

Botan:Botan 是一个 C++ 的加密算法库,支持 AES, DES, SHA-1, RSA, DSA, Diffie-Hellman 等多种算法,支持 X.509 认证以及CRLs 和 PKCS #10 ,这里是一段示例代码。

CGAL:CGAL ,计算几何算法库,是一个大型C + +库的几何数据结构和算法,如Delaunay三角网,网格生成,布尔运算的多边形,以及各种几何处理算法。 CGAL是用来在各个领域:计算机图形学,科学可视化,计算机辅助设计与建模,地理信息系统,分子生物学,医学影像学,机器人学和运动规划,和数值方法。

MyMediaLite:是一个轻量级的多用途的推荐系统的算法库。它解决了两个最常见的场景的协同过滤:评分预报 (1-5)通过一些隐式的反馈进行预测。

blas:提供向量和矩阵的基本运算,用fortran编写。

lapack:提供向量和矩阵的高级运算,用fortran编写,内部以blas为基础库。

cblas:提供c接口的blas库,源码通过f2c转换为C语言。f2c官网。

clapack:提供c接口的lapack库,源码通过f2c转换为C语言。

scalapack:提供并行运算的lapack库,源码用fortran编写。

armadillo:线性代数运算库,源码用c++编写。但很多功能又是基于lapack库的,这些功能是fortran语言。

openblas:针对intel cpu优化的blas库。

mkl:扩展的且针对intel cpu优化的库,包括BLAS、LAPACK、稀疏矩阵解算器、快速傅立叶变换(FFT)、矢量数学库、矢量随机数生成器。

eigen:也是线性代数运算库,但完全用C++写,依赖库只有C++标准库。使用很方便,下载后直接解压像使用自己的代码一样使用。

SP++:Signal Processing in C++) 是一个关于信号处理与数值计算的开源C++程序库,该库提供了信号处理与数值计算中常用算法的C++实现。SP++中所有算法都以C++类模板方法实现,以头文件形式组织而成,所以不需要用户进行本地编译,只要将相关的头文件包含在项目中即可使用。”XXX.h”表示声明文件,”XXX-impl.h”表示对应的实现文件。所有的函数和类均位于名字空间”splab”中,因此使用SP++时要进行命名空间声明:”using namespace splab”。所有算法以代码的形式发表在了“开源中国社区”,博客地址为:http://my.oschina.net/zmjerry/blog,若有找不到的文件,可以通过博客主页提供的“搜索博客”功能进行查找。

libjpeg:用libjpeg库在LCD上显示图片

letter-shell : letter shell 3.0是一个C语言编写的,可以嵌入在程序中的嵌入式shell,通俗一点说就是一个串口命令行,可以通过命令行调用、运行程序中的函数。

x264: x264开源的解码编码库.

ws2812: ws2812驱动库.

更多资源敬请期待......

3、GUI相关

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

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

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

emwin:一个老牌GUI库。

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

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

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

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

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

QT_Creator:QT_Creator下载链接。

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

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

玲珑GUI:玲珑GUI教程页。

FreeTpye :字体渲染库

std : 一个嵌入式小型图形库

qpc : 一个开源的状态机实现.

Quantum Leaps : 状态机组织.

更多资源敬请期待......

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中文社区。

讯为开发社区:北京讯为ARM开发社区。

讯为官网:讯为官网。

NXP社区:恩智浦论坛。

Linux:Linux内核官网。

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

Buildroot:buildroot源码。

Debian:Debian官网。

Ubuntu:Ubuntu官网。

BOA官网:一个单任务 web 服务器 ,可以移植到嵌入式平台。

荔枝派:荔枝派指南。

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

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

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位处理器快速入门学习的集成开发平台 。

easyicon:一个免费图标下载网站。

codingdict:一个类似于菜鸟教程的编程类教程网站。

codingdict开源软件:codingdict网站收集的各类开源软件集合。

C经典示例:一些C语言的实例。

xmake:轻量级跨平台C/C++构建工具。

ros手册: ros的官方手册。

gnu的开源软件: gnu的开源软件

soft-and-hard: 这是一个以物联网项目为主方向分享web开发教程,制作并演示一个物联网系统是怎么跑起来的,介绍如何学习相关知识。

一个大佬的博客:一个大佬的博客.

FireflyTeam :一个开放源代码的仓库。

python脚本:一些好用的python脚本。

C++ libraries:A list of open source C++ libraries.

Lindenis:An open source software for Lindenis SBC. This site maintained by Lindeni Tech. Ltd.

fast-line-following:一个快速寻线机器人的算法。

深度神经网络可视化工具:深度神经网络可视化工具。

更多资源敬请期待......

7、一些芯片原厂代码仓库

STMicroelectronics:意法半导体(ST)。

TI:德州仪器(TI)。

NXP:恩智浦(NXP)。

Freescale:飞思卡尔半导体(Freescale)。

hisilicon:海思。

rockchip:瑞芯微。

Samsung:三星。

Infineon:英飞凌。

analogdevicesinc:亚德诺半导体(ADI)。

MicrochipTech:微芯半导体(Microchip )。

NordicSemiconductor:北欧集成电路(Nordic)。

cypress-io:赛普拉斯半导体(Cypress)。

更多资源敬请期待......

8、一些好玩的项目

Avem : 这是一个轻量级无人机飞控项目。

Awesome-Embedded : 这是一个很棒的嵌入式资源汇总的项目。汇聚了各种嵌入式相关的资源。

FreeModbus : FreeModbus是一款开源的Modbus协议栈,但是只有从机开源,主机源码是需要收费的。同时网上也没有发现比较好的开源的Modbus主机协议栈,所以才开发这款支持主机模式的FreeModbus协议栈。本版FreeModbus版本号更改为V1.6

9、一些单独软件包的讲解

Tslib移植与分析:Tslib移植与分析。

计算机资源

之前我们分享过一篇最值得关注的10个C开源项目,这次要分享一些关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。

1、 标准库

C++标准库,包括了STL容器,算法和函数等。

C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。

Standard Template Library:标准模板库

C POSIX library : POSIX系统的C标准库规范

ISO C++ Standards Committee :C++标准委员会

2、 框架

C++通用框架和库

Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的集合

ASL :Adobe源代码库提供了同行的评审和可移植的C++源代码库。

Boost :大量通用C++库的集合。

BDE :来自于彭博资讯实验室的开发环境。

Cinder:提供专业品质创造性编码的开源开发社区。

Cxxomfort:轻量级的,只包含头文件的库,将C++ 11的一些新特性移植到C++03中。

Dlib:使用契约式编程和现代C++科技设计的通用的跨平台的C++库。

EASTL :EA-STL公共部分

ffead-cpp :企业应用程序开发框架

Folly:由Facebook开发和使用的开源C++库

JUCE :包罗万象的C++类库,用于开发跨平台软件

libPhenom:用于构建高性能和高度可扩展性系统的事件框架。

LibSourcey :用于实时的视频流和高性能网络应用程序的C++11 evented IO

LibU : C语言写的多平台工具库

Loki :C++库的设计,包括常见的设计模式和习语的实现。

MiLi :只含头文件的小型C++库

openFrameworks :开发C++工具包,用于创意性编码。

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

Reason :跨平台的框架,使开发者能够更容易地使用Java,.Net和Python,同时也满足了他们对C++性能和优势的需求。

ROOT :具备所有功能的一系列面向对象的框架,能够非常高效地处理和分析大量的数据,为欧洲原子能研究机构所用。

STLport:是STL具有代表性的版本

STXXL:用于额外的大型数据集的标准模板库。

Ultimate++ :C++跨平台快速应用程序开发框架

Windows Template Library:用于开发Windows应用程序和UI组件的C++库

Yomm11 :C++11的开放multi-methods.

3、 人工智能

btsk :游戏行为树启动器工具

Evolving Objects:基于模板的,ANSI C++演化计算库,能够帮助你非常快速地编写出自己的随机优化算法。

Neu:C++11框架,编程语言集,用于创建人工智能应用程序的多用途软件系统。

4、 异步事件循环

Boost.Asio:用于网络和底层I/O编程的跨平台的C++库。

libev :功能齐全,高性能的时间循环,轻微地仿效libevent,但是不再像libevent一样有局限性,也修复了它的一些bug。

libevent :事件通知库

libuv :跨平台异步I/O。

5、音频

音频,声音,音乐,数字化音乐库

FMOD :易于使用的跨平台的音频引擎和音频内容的游戏创作工具。

Maximilian :C++音频和音乐数字信号处理库

OpenAL :开源音频库—跨平台的音频API

Opus:一个完全开放的,免版税的,高度通用的音频编解码器

Speex:免费编解码器,为Opus所废弃

Tonic: C++易用和高效的音频合成

Vorbis: Ogg Vorbis是一种完全开放的,非专有的,免版税的通用压缩音频格式。

6、 生态学

生物信息,基因组学和生物技术

libsequence:用于表示和分析群体遗传学数据的C++库。

SeqAn:专注于生物数据序列分析的算法和数据结构。

Vcflib :用于解析和处理VCF文件的C++库

Wham:直接把联想测试应用到BAM文件的基因结构变异。

7、 压缩

压缩和归档库

bzip2:一个完全免费,免费专利和高质量的数据压缩

doboz:能够快速解压缩的压缩库

PhysicsFS:对各种归档提供抽象访问的库,主要用于视频游戏,设计灵感部分来自于Quake3的文件子系统。

KArchive:用于创建,读写和操作文件档案(例如zip和 tar)的库,它通过QIODevice的一系列子类,使用gzip格式,提供了透明的压缩和解压缩的数据。

LZ4 :非常快速的压缩算法

LZHAM :无损压缩数据库,压缩比率跟LZMA接近,但是解压缩速度却要快得多。

LZMA :7z格式默认和通用的压缩方法。

LZMAT :及其快速的实时无损数据压缩库

miniz:单一的C源文件,紧缩/膨胀压缩库,使用zlib兼容API,ZIP归档读写,PNG写方式。

Minizip:Zlib最新bug修复,支持PKWARE磁盘跨越,AES加密和IO缓冲。

Snappy :快速压缩和解压缩

ZLib :非常紧凑的数据流压缩库

ZZIPlib:提供ZIP归档的读权限。

8、并发性

并发执行和多线程

Boost.Compute :用于OpenCL的C++GPU计算库

Bolt :针对GPU进行优化的C++模板库

C++React :用于C++11的反应性编程库

Intel TBB :Intel线程构件块

Libclsph:基于OpenCL的GPU加速SPH流体仿真库

OpenCL :并行编程的异构系统的开放标准

OpenMP:OpenMP API

Thrust :类似于C++标准模板库的并行算法库

HPX :用于任何规模的并行和分布式应用程序的通用C++运行时系统

VexCL :用于OpenCL/CUDA 的C++向量表达式模板库。

9、 容器

C++ B-tree :基于B树数据结构,实现命令内存容器的模板库

Hashmaps: C++中开放寻址哈希表算法的实现

10、 密码学

Bcrypt :一个跨平台的文件加密工具,加密文件可以移植到所有可支持的操作系统和处理器中。

BeeCrypt

Botan: C++加密库

Crypto++:一个有关加密方案的免费的C++库

GnuPG: OpenPGP标准的完整实现

GnuTLS :实现了SSL,TLS和DTLS协议的安全通信库

Libgcrypt

libmcrypt

LibreSSL:免费的SSL/TLS协议,属于2014 OpenSSL的一个分支

LibTomCrypt:一个非常全面的,模块化的,可移植的加密工具

libsodium:基于NaCI的加密库,固执己见,容易使用

Nettle 底层的加密库

OpenSSL : 一个强大的,商用的,功能齐全的,开放源代码的加密库。

Tiny AES128 in C :用C实现的一个小巧,可移植的实现了AES128ESB的加密算法

11、 数据库

数据库,SQL服务器,ODBC驱动程序和工具

hiberlite :用于Sqlite3的C++对象关系映射

Hiredis: 用于Redis数据库的很简单的C客户端库

LevelDB: 快速键值存储库

LMDB:符合数据库四大基本元素的嵌入键值存储

MySQL++:封装了MySql的C API的C++ 包装器

RocksDB:来自Facebook的嵌入键值的快速存储

SQLite:一个完全嵌入式的,功能齐全的关系数据库,只有几百KB,可以正确包含到你的项目中。

12、 调试

调试库, 内存和资源泄露检测,单元测试

Boost.Test:Boost测试库

Catch:一个很时尚的,C++原生的框架,只包含头文件,用于单元测试,测试驱动开发和行为驱动开发。

CppUnit:由JUnit移植过来的C++测试框架

CTest:CMake测试驱动程序

googletest:谷歌C++测试框架

ig-debugheap:用于跟踪内存错误的多平台调试堆

libtap:用C语言编写测试

MemTrack —用于C++跟踪内存分配

microprofile- 跨平台的网络试图分析器

minUnit :使用C写的迷你单元测试框架,只使用了两个宏

Remotery:用于web视图的单一C文件分析器

UnitTest++:轻量级的C++单元测试框架

13、 游戏引擎

Cocos2d-x :一个跨平台框架,用于构建2D游戏,互动图书,演示和其他图形应用程序。

Grit :社区项目,用于构建一个免费的游戏引擎,实现开放的世界3D游戏。

Irrlicht :C++语言编写的开源高性能的实时#D引擎

Polycode:C++实现的用于创建游戏的开源框架(与Lua绑定)。

14、 图形用户界面

CEGUI : 很灵活的跨平台GUI库

FLTK :快速,轻量级的跨平台的C++GUI工具包。

GTK+: 用于创建图形用户界面的跨平台工具包

gtkmm :用于受欢迎的GUI库GTK+的官方C++接口。

imgui:拥有最小依赖关系的立即模式图形用户界面

libRocket :libRocket 是一个C++ HTML/CSS 游戏接口中间件

MyGUI :快速,灵活,简单的GUI

Ncurses:终端用户界面

QCustomPlot :没有更多依赖关系的Qt绘图控件

Qwt :用户与技术应用的Qt 控件

QwtPlot3D :功能丰富的基于Qt/OpenGL的C++编程库,本质上提供了一群3D控件

OtterUI :OtterUI 是用于嵌入式系统和互动娱乐软件的用户界面开发解决方案

PDCurses 包含源代码和预编译库的公共图形函数库

wxWidgets C++库,允许开发人员使用一个代码库可以为widows, Mac OS X,Linux和其他平台创建应用程序

15、 图形

bgfx:跨平台的渲染库

Cairo:支持多种输出设备的2D图形库

Horde3D 一个小型的3D渲染和动画引擎

magnum C++11和OpenGL 2D/3D 图形引擎

Ogre 3D 用C++编写的一个面向场景,实时,灵活的3D渲染引擎(并非游戏引擎)

OpenSceneGraph 具有高性能的开源3D图形工具包

Panda3D 用于3D渲染和游戏开发的框架,用Python和C++编写。

Skia 用于绘制文字,图形和图像的完整的2D图形库

urho3d 跨平台的渲染和游戏引擎。

16、 图像处理

Boost.GIL:通用图像库

CImg :用于图像处理的小型开源C++工具包

CxImage :用于加载,保存,显示和转换的图像处理和转换库,可以处理的图片格式包括 BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K。

FreeImage :开源库,支持现在多媒体应用所需的通用图片格式和其他格式。

GDCM:Grassroots DICOM 库

ITK:跨平台的开源图像分析系统

Magick++:ImageMagick程序的C++接口

MagickWnd:ImageMagick程序的C++接口

OpenCV : 开源计算机视觉类库

tesseract-ocr:OCR引擎

VIGRA :用于图像分析通用C++计算机视觉库

VTK :用于3D计算机图形学,图像处理和可视化的开源免费软件系统。

17、 国际化

gettext :GNU `gettext’

IBM ICU:提供Unicode 和全球化支持的C、C++ 和Java库

libiconv :用于不同字符编码之间的编码转换库

18、 Jason

frozen : C/C++的Jason解析生成器

Jansson :进行编解码和处理Jason数据的C语言库

jbson :C++14中构建和迭代BSON data,和Json 文档的库

JeayeSON:非常健全的C++ JSON库,只包含头文件

JSON++ : C++ JSON 解析器

json-parser:用可移植的ANSI C编写的JSON解析器,占用内存非常少

json11 :一个迷你的C++11 JSON库

jute :非常简单的C++ JSON解析器

ibjson:C语言中的JSON解析和打印库,很容易和任何模型集成。

libjson:轻量级的JSON库

PicoJSON:C++中JSON解析序列化,只包含头文件

qt-json :用于JSON数据和 QVariant层次间的相互解析的简单类

QJson:将JSON数据映射到QVariant对象的基于Qt的库

RapidJSON: 用于C++的快速JSON 解析生成器,包含SAX和DOM两种风格的API

YAJL :C语言中快速流JSON解析库

19、 日志

Boost.Log :设计非常模块化,并且具有扩展性

easyloggingpp:C++日志库,只包含单一的头文件。

Log4cpp :一系列C++类库,灵活添加日志到文件,系统日志,IDSA和其他地方。

templog:轻量级C++库,可以添加日志到你的C++应用程序中

20、 机器学习

Caffe :快速的神经网络框架

CCV :以C语言为核心的现代计算机视觉库

mlpack :可扩展的C++机器学习库

OpenCV:开源计算机视觉库

Recommender:使用协同过滤进行产品推荐/建议的C语言库。

SHOGUN:Shogun 机器学习工具

sofia-ml :用于机器学习的快速增量算法套件

21、 数学

Armadillo :高质量的C++线性代数库,速度和易用性做到了很好的平衡。语法和MatlAB很相似

blaze:高性能的C++数学库,用于密集和稀疏算法。

ceres-solver :来自谷歌的C++库,用于建模和解决大型复杂非线性最小平方问题。

CGal: 高效,可靠的集合算法集合

cml :用于游戏和图形的免费C++数学库

Eigen :高级C++模板头文件库,包括线性代数,矩阵,向量操作,数值解决和其他相关的算法。

GMTL:数学图形模板库是一组广泛实现基本图形的工具。

GMP:用于个高精度计算的C/C++库,处理有符号整数,有理数和浮点数

22、 多媒体

GStreamer :构建媒体处理组件图形的库

LIVE555 Streaming Media :使用开放标准协议(RTP/RTCP, RTSP, SIP) 的多媒体流库

libVLC :libVLC (VLC SDK)媒体框架

QtAv:基于Qt和FFmpeg的多媒体播放框架,能够帮助你轻而易举地编写出一个播放器

SDL :简单直控媒体层

SFML :快速,简单的多媒体库

23、 网络

ACE:C++面向对象网络变成工具包

Boost.Asio:用于网络和底层I/O编程的跨平台的C++库

Casablanca:C++ REST SDK

cpp-netlib:高级网络编程的开源库集合

Dyad.c:C语言的异步网络

libcurl :多协议文件传输库

Mongoose:非常轻量级的网络服务器

Muduo :用于Linux多线程服务器的C++非阻塞网络库

net_skeleton :C/C++的TCP 客户端/服务器库

nope.c :基于C语言的超轻型软件平台,用于可扩展的服务器端和网络应用。 对于C编程人员,可以考虑node.js

Onion :C语言HTTP服务器库,其设计为轻量级,易使用。

POCO:用于构建网络和基于互联网应用程序的C++类库,可以运行在桌面,服务器,移动和嵌入式系统。

RakNet:为游戏开发人员提供的跨平台的开源C++网络引擎。

Tuf o :用于Qt之上的C++构建的异步Web框架。

WebSocket++ :基于C++/Boost Aiso的websocket 客户端/服务器库

ZeroMQ :高速,模块化的异步通信库

24、 物理学

动力学仿真引擎

Box2D:2D的游戏物理引擎。

Bullet :3D的游戏物理引擎。

Chipmunk :快速,轻量级的2D游戏物理库

LiquidFun:2D的游戏物理引擎

ODE :开放动力学引擎-开源,高性能库,模拟刚体动力学。

ofxBox2d:Box2D开源框架包装器。

Simbody :高性能C++多体动力学/物理库,模拟关节生物力学和机械系统,像车辆,机器人和人体骨骼。

25、 机器人学

MOOS-IvP :一组开源C++模块,提供机器人平台的自主权,尤其是自主的海洋车辆。

MRPT:移动机器人编程工具包

PCL :点云库是一个独立的,大规模的开放项目,用于2D/3D图像和点云处理。

Robotics Library (RL): 一个独立的C++库,包括机器人动力学,运动规划和控制。

RobWork:一组C++库的集合,用于机器人系统的仿真和控制。

ROS :机器人操作系统,提供了一些库和工具帮助软件开发人员创建机器人应用程序。

26、 科学计算

FFTW :用一维或者多维计算DFT的C语言库。

GSL:GNU科学库。

27、 脚本

ChaiScript :用于C++的易于使用的嵌入式脚本语言。

Lua :用于配置文件和基本应用程序脚本的小型快速脚本引擎。

luacxx:用于创建Lua绑定的C++ 11 API

SWIG :一个可以让你的C++代码链接到JavaScript,Perl,PHP,Python,Tcl和Ruby的包装器/接口生成器

V7:嵌入式的JavaScript 引擎。

V8 :谷歌的快速JavaScript引擎,可以被嵌入到任何C++应用程序中。

28、 序列化

Cap’n Proto :快速数据交换格式和RPC系统。

cereal :C++11 序列化库

FlatBuffers :内存高效的序列化库

MessagePack :C/C++的高效二进制序列化库,例如 JSON

protobuf :协议缓冲,谷歌的数据交换格式。

protobuf-c :C语言的协议缓冲实现

SimpleBinaryEncoding:用于低延迟应用程序的对二进制格式的应用程序信息的编码和解码。

Thrift :高效的跨语言IPC/RPC,用于C++,Java,Python,PHP,C#和其它多种语言中,最初由Twitter开发。

29、 视频

libvpx :VP8/VP9编码解码SDK

FFmpeg :一个完整的,跨平台的解决方案,用于记录,转换视频和音频流。

libde265 :开放的h.265视频编解码器的实现。

OpenH264:开源H.364 编解码器。

Theora :免费开源的视频压缩格式。

30、 虚拟机

CarpVM:C中有趣的VM,让我们一起来看看这个。

MicroPython :旨在实现单片机上Python3.x的实现

TinyVM:用纯粹的ANSI C编写的小型,快速,轻量级的虚拟机。

31、 Web应用框架

Civetweb :提供易于使用,强大的,C/C++嵌入式Web服务器,带有可选的CGI,SSL和Lua支持。

CppCMS :免费高性能的Web开发框架(不是 CMS).

Crow :一个C++微型web框架(灵感来自于Python Flask)

Kore :使用C语言开发的用于web应用程序的超快速和灵活的web服务器/框架。

libOnion:轻量级的库,帮助你使用C编程语言创建web服务器。

QDjango:使用C++编写的,基于Qt库的web框架,试图效仿Django API,因此得此名。

Wt :开发Web应用的C++库。

32、 XML

XML就是个垃圾,xml的解析很烦人,对于计算机它也是个灾难。这种糟糕的东西完全没有存在的理由了。-Linus Torvalds

Expat :用C语言编写的xml解析库

Libxml2 :Gnome的xml C解析器和工具包

libxml++ :C++的xml解析器

PugiXML :用于C++的,支持XPath的轻量级,简单快速的XML解析器。

RapidXml :试图创建最快速的XML解析器,同时保持易用性,可移植性和合理的W3C兼容性。

TinyXML :简单小型的C++XML解析器,可以很容易地集成到其它项目中。

TinyXML2:简单快速的C++CML解析器,可以很容易集成到其它项目中。

TinyXML++:TinyXML的一个全新的接口,使用了C++的许多许多优势,模板,异常和更好的异常处理。

Xerces-C++ :用可移植的C++的子集编写的XML验证解析器。

33、 多项混杂

一些有用的库或者工具,但是不适合上面的分类,或者还没有分类。

C++ Format :C++的小型,安全和快速格式化库

casacore :从aips++ 派生的一系列C++核心库

cxx-prettyprint:用于C++容器的打印库

DynaPDF :易于使用的PDF生成库

gcc-poison :帮助开发人员禁止应用程序中的不安全的C/C++函数的简单的头文件。

googlemock:编写和使用C++模拟类的库

HTTP Parser :C的http请求/响应解析器

libcpuid :用于x86 CPU检测盒特征提取的小型C库

libevil :许可证管理器

libusb:允许移动访问USB设备的通用USB库

PCRE:正则表达式C库,灵感来自于Perl中正则表达式的功能。

Remote Call Framework :C++的进程间通信框架。

Scintilla :开源的代码编辑控件

Serial Communication Library :C++语言编写的跨平台,串口库。

SDS:C的简单动态字符串库

SLDR :超轻的DNS解析器

SLRE: 超轻的正则表达式库

Stage :移动机器人模拟器

VarTypes:C++/Qt4功能丰富,面向对象的管理变量的框架。

ZBar:‘条形码扫描器’库,可以扫描照片,图片和视频流中的条形码,并返回结果。

CppVerbalExpressions :易于使用的C++正则表达式

QtVerbalExpressions:基于C++ VerbalExpressions 库的Qt库

PHP-CPP:使用C++来构建PHP扩展的库

Better String :C的另一个字符串库,功能更丰富,但是没有缓冲溢出问题,还包含了一个C++包装器。

34、 软件

用于创建开发环境的软件

aardio : arrdio是一个能在windows系统中快速创建一个应用程序的一门语言,也是一个超级胶水工具。你可以用python、java、C、C#、javastrip、PHP等数值的编程语言结合arrdio几分钟就可以开发一款带界面的桌面应用程序。你可以用html的方式来创建一个界面或者用其他界面库来创建一个界面。一切都是你说了算!超小的软件体积,超快的创建速度!

cmder: cmder是一个增强型命令行工具,不仅可以使用 windows 下的所有命令,更爽的是可以使用linux的命令,shell命令。windows 下的软件.

35、 编译器

C/C++编译器列表

Clang :由苹果公司开发的

GCC:GNU编译器集合

Intel C++ Compiler :由英特尔公司开发

LLVM :模块化和可重用编译器和工具链技术的集合

Microsoft Visual C++ :MSVC,由微软公司开发

Open WatCom :Watcom,C,C++和Fortran交叉编译器和工具

TCC :轻量级的C语言编译器

36、 在线编译器

在线C/C++编译器列表

codepad :在线编译器/解释器,一个简单的协作工具

CodeTwist:一个简单的在线编译器/解释器,你可以粘贴的C,C++或者Java代码,在线执行并查看结果

coliru :在线编译器/shell, 支持各种C++编译器

Compiler Explorer:交互式编译器,可以进行汇编输出

CompileOnline:Linux上在线编译和执行C++程序

Ideone :一个在线编译器和调试工具,允许你在线编译源代码并执行,支持60多种编程语言。

37、 调试器

C/C++调试器列表

Comparison of debuggers :来自维基百科的调试器列表

GDB :GNU调试器

Valgrind:内存调试,内存泄露检测,性能分析工具。

38、 集成开发环境(IDE)

C/C++集成开发环境列表

AppCode :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C++,Java和Java开发的集成开发环境

CLion:来自JetBrains的跨平台的C/C++的集成开发环境

Code::Blocks :免费C,C++和Fortran的集成开发环境

CodeLite :另一个跨平台的免费的C/C++集成开发环境

Dev-C++:可移植的C/C++/C++11集成开发环境

Eclipse CDT:基于Eclipse平台的功能齐全的C和C++集成开发环境

Geany :轻量级的快速,跨平台的集成开发环境。

IBM VisualAge :来自IBM的家庭计算机集成开发环境。

Irony-mode:由libclang驱动的用于Emacs的C/C++微模式

KDevelop:免费开源集成开发环境

Microsoft Visual Studio :来自微软的集成开发环境

NetBeans :主要用于Java开发的的集成开发环境,也支持其他语言,尤其是PHP,C/C++和HTML5。

Qt Creator:跨平台的C++,Javascript和QML集成开发环境,也是Qt SDK的一部分。

rtags:C/C++的客户端服务器索引,用于 跟基于clang的emacs的集成

Xcode :由苹果公司开发

YouCompleteMe:一个用于Vim的根据你敲的代码快速模糊搜索并进行代码补全的引擎。

39、 构建系统

Bear :用于为clang工具生成编译数据库的工具

Biicode:基于文件的简单依赖管理器。

CMake :跨平台的免费开源软件用于管理软件使用独立编译的方法进行构建的过程。

CPM:基于CMake和Git的C++包管理器

FASTBuild:高性能,开源的构建系统,支持高度可扩展性的编译,缓冲和网络分布。

Ninja :专注于速度的小型构建系统

Scons :使用Python scipt 配置的软件构建工具

tundra :高性能的代码构建系统,甚至对于非常大型的软件项目,也能提供最好的增量构建次数。

tup:基于文件的构建系统,用于后台监控变化的文件。

40、 静态代码分析

提高质量,减少瑕疵的代码分析工具列表

Cppcheck :静态C/C++代码分析工具

include-what-you-use :使用clang进行代码分析的工具,可以#include在C和C++文件中。

OCLint :用于C,C++和Objective-C的静态源代码分析工具,用于提高质量,减少瑕疵。

Clang Static Analyzer:查找C,C++和Objective-C程序bug的源代码分析工具

List of tools for static code analysis :来自维基百科的静态代码分析工具列表

41、 linux 实用工具

picocom: linux 下的一个好用的串口终端.

w3m : 终端浏览器,真正的程序员就该使用命令行来浏览网页。

The Fuck : 在终端下是不是经常输错命令,搞得自己心烦意乱,The Fuck 是一款了不起的工具,帮你彻底解决这个问题,当你输错命令后,只要输入 fuck 命令,它会帮你自动纠正错误,精彩之极!

tldr : tldr 是 Too long, Don't read 的缩写,可以帮助你快速查看常用命令的使用实例,比如 tar 命令,那后面一长串参数谁记得清呢?当然,linux 大佬除外。

fzf : fzf 是一款支持模糊搜索的交互式工具,可以用来查找任何列表内容,包括文件、Git 分支、进程等。

fd : 简单、快速、好用,用于替换 find 的搜索工具。

exa : 用来替换 ls 命令的现代化工具。

nnn : nnn (n³) 是一个功能齐全的终端文件管理器,速度非常快且几乎 0 配置,也是一个非常不错的选择。

powerline : 终端本身是高效的,但有时也略显乏味,使用 powerline 可以为终端加上强大的 状态栏,比如在 vim 中显示当前状态,在打开 git 目录时显示当前分支等等。

dtrx 有了这个工具你基本再也不用记住如何在linux上面解压各种后缀的文件了,什么tar.gz,tgz,xz,bz2,zip.rar等通通搞定,这是一个python工具.

autojump : 记忆进过的文件夹,下次可用 j + 文件夹名 直接跳进, 很方便.软件安装完后输入下面命令生效终端 (echo ""# autojump\nsource /usr/share/autojump/autojump.bash" >> ~/.bashrc)

rebash : 脚本库/框架。特点:进口,例外,文件测试...

shutit : 基于bash和pexpect的自动化框架

dispatch : 50行可移植shell脚本中的命令行参数解析器。

bashful : 一个库的集合,以简化编写Bash脚本

ansi : 在纯bash中的ANSI转义码 - 更改文本颜色,定位光标,等等

history :非常简单,尤其是在你依赖于复制使用过的命令时,这个命令特别有用。

sort, uniq:排序去重。

awk, grep, sed:文本处理神器。

jq,命令行的json查询和格式化工具,适合查看rest接口的输出

strace,打印出进程调用了哪些系统调用。

objdump,打印目标码和反汇编结果

transfer.sh :可通过简单的命令行来快速完成文件共享操作

stegify : 一款神奇的命令行工具,能将任意文件隐藏到图片里面。

Httpie一个 HTTP 命令行客户端,使用起来比 curl 更为友好,并支持输出 JSON、语法高亮等特性,为开发者呈现更为直观的 UI,与服务器间的调试体验也更为人性化。

PM2 :用以在后台运行和管理进程

SpaceVim:这是一个 vim 插件,使你的 Vim 变成带代码自动补全等功能的更加强大的代码编辑器!

axel:多线程断点下载工具,非常好用。例如下图中这样,指定了 8 个线程同时下载。

nmon:它能够帮你进行电脑的性能监控,包括 CPU,内存,磁盘 IO,网络 IO,并且界面很炫酷,是不是很像黑客,快去试试吧 nmon for Linux | Main

Alex:它是一个简单但很有用的小工具。适用于明文文本或者格式为 Markdown 或 HTML 的文档。Alex 会对“性别偏好、极端主义、种族相关、宗教,或者文章中其他不平等的措辞”产生警告。如果你想要试试看 Alex,这里有一个在线 demo

GNU Aspell:它能够交互式地检测文本文档,能高亮显示拼写错误,还能在拼写错误的上方提供正确的拼写建议。Aspell 在进行拼写检查的时候,同样能够忽略许多语法标记;

Proselint:它是一款全能的实时检查工具。它会找出行话、大话、不正确日期和时间格式、滥用的术语等等。它也很容易运行并忽略文本中的标记;

WordGrinder:它是一款使用起来很简单,但拥有足够的编写和发布功能的文字编辑器。它支持基本的格式和样式,并且你可以将你的文字以 Markdown、ODT、LaTeX 或者 HTML 等格式导出;

cloc: 用来统计代码行数,统计结果比较分类比较详细,支持大部分编程语言。

tldr: 如果你经常不想详读man文档,那么你应该试试这个小工具。

cppman:C++ 98/11/14 手册查询 for Linux/MacOS

icdiff:分屏显示 diff

mcedit:终端下面的 NotePad++

owncloud:DropBox 的开源替代品,提供命令行客户端 owncloudcmd

pm:在 bash / zsh 中迅速切换项目目录

ncdu:可视化的空间分析程序,你发现有人把 /home 空间撑爆了,影响了大家的工作,你愤怒了一层层的 du,一层层的 cd,整个过程就像刨垃圾堆一样的恶心,后来发现了 ncdu 这个基于 ncurses 的空间分析程序:

glances:更强大的 htop / top 代替者 htop 代替 top,glances 代替 htop:

mc :内容浏览/预览

ranger:内容浏览/预览另一款内容预览软件,界面没有 mc 那么漂亮,标记拷贝也没它强,但是预览功能做的很不错,如果你习惯 vim 键位的话,你会发现ranger有些地方比 mc做的好不少:

dstat:vmstat 代替者,可能不少人都用过,但是本问题下好像没人提?

cheat:命令行笔记,就是各种 cheat sheet ,比如经常搞忘 redis 命令的话,你可以新建 ~/.cheat/redis 这个文件,写一些内容,比如:

multitail:多重 tail,通常你不止一个日志文件要监控,怎么办?终端软件里开多个 tab 太占地方,可以试试这个工具:

bro:以用例为主的帮助系统,类似于man,但是对新手友好.

http.server : python中的一个本地小型 http 服务器,可以用于局域网传输文件.但没有上传功能.

SimpleHTTPServerWithUpload.py : python中的一个本地小型 http 服务器,可以用于局域网传输文件.有上传功能.有 python2 和 python3 两个版本.

参考连接: 干货| C++ 资源、框架大全,推荐收藏
公众号嵌入式大杂烩资源仓库

​ https://www.zhihu.com/question/59227720/answer/286665684

​ https://www.zhihu.com/question/59227720/answer/578875058

​ https://www.zhihu.com/question/59227720/answer/163933473

​ https://www.zhihu.com/question/59227720/answer/163966430

 
 
 
 
endl;