目录
引言:
标准库
框架C++通用框架和库
人工智能与机器人学习
异步事件循环
音视频多媒体
压缩压缩和归档库
并发性并发执行和多线程
容器
密码学
数据库,SQL服务器,ODBC驱动程序和工具
游戏引擎
图形与图像
国际化
Json
日志
网络
物理学与科学计算
脚本
序列化
虚拟机
Web应用框架
XML
杂项一些有用的库或者工具,但是不适合上面的分类,或者还没有分类
软件用于创建开发环境的软件
编译器与在线编译器
调试器与测试C/C++调试器列表
集成开发环境(IDE)C/C++集成开发环境列表
构建系统
静态代码分析提高质量,减少瑕疵的代码分析工具列表
引言:
在现代软件开发中,C++作为一门功能强大的编程语言,拥有广泛的开源框架和库。这些框架和库涵盖了各种应用领域和功能需求,为开发人员提供了丰富的工具和资源。本文将对C++中流行的开源框架和库进行总结,包括标准库、框架C++通用框架和库、人工智能与机器人学习、
异步事件循环、音视频多媒体、压缩压缩和归档库、并发性并发执行和多线程、容器、密码学、
数据库,SQL服务器,ODBC驱动程序和工具、游戏引擎、图形与图像、国际化、Json、日志、机器学习、多媒体、网络、物理学与科学计算、脚本、序列化、虚拟机、Web应用框架、XML、多项混杂、编译器与在线编译器、调试器、集成开发环境(IDE)、构建系统、静态代码分析等方面的内容。下面简单介绍一下相关类别的开源软件,有需要的朋友可以参考。编写不易,有用的朋友点个赞或加粉一下万分感谢!
以下总结部分开源工程供大家参考:
标准库
C++的标准库是C++核心语言的一部分,提供了许多基本的功能,如字符串处理、文件操作、容器等。它是C++开发人员必备的工具之一。
- C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。
- Standard Template Library:标准模板库。
- C POSIX library:POSIX系统的C标准库规范。
- ISO C++ Standards Committee:C++标准委员会。
框架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。
- Apache Thrift:用于构建可扩展的跨语言服务的软件框架
- FastFlow:基于流式编程模型的高效异构并行编程框架
人工智能与机器人学习
- btsk:游戏行为树启动器工具。
- Evolving Objects:基于模板的,ANSI C++演化计算库,能够帮助你非常快速地编写出自己的随机优化算法。
- Neu:C++11框架,编程语言集,用于创建人工智能应用程序的多用途软件系统。
- MOOS-IvP:一组开源C++模块,提供机器人平台的自主权,尤其是自主的海洋车辆。
- MRPT:移动机器人编程工具包。
- PCL:点云库是一个独立的,大规模的开放项目,用于2D/3D图像和点云处理。
- Robotics Library (RL):一个独立的C++库,包括机器人动力学,运动规划和控制。
- RobWork:一组C++库的集合,用于机器人系统的仿真和控制。
- ROS:机器人操作系统,提供了一些库和工具帮助软件开发人员创建机器人应用程序。
- Shark:C++数学库,适用于算法和机器学习
- libtorch:一个基于C++的PyTorch深度学习框架,旨在提供高性能和可扩展的深度学习应用程序。
- Caffe:快速的神经网络框架。
- CCV:以C语言为核心的现代计算机视觉库。
- mlpack:可扩展的C++机器学习库。
- OpenCV:开源计算机视觉库。
- Recommender:使用协同过滤进行产品推荐/建议的C语言库。
- SHOGUN:Shogun 机器学习工具。
- sofia-ml:用于机器学习的快速增量算法套件。
异步事件循环
- Boost.Asio:用于网络和底层I/O编程的跨平台的C++库。
- libev:功能齐全,高性能的时间循环,轻微地仿效libevent,但是不再像libevent一样有局限性,也修复了它的一些bug。
- libevent:事件通知库。
- libhv:一个类似libevent、libuv的跨平台事件循环库,提供了更简单的API接口和更丰富的协议。
- libuv:跨平台异步I/O。
- Boost.Beast:一个用于HTTP和WebSocket编程的C++库,基于Boost.Asio。
- ASIOHPX:一个将Boost.Asio与高性能异步并行计算框架HPX整合的库。
- Proxygen:由Facebook开发的异步HTTP服务器框架,具有高性能和可扩展性。
- Pion:一个用于可扩展的服务器和客户端的轻量级C++网络库。
- Crow:一个使用C++11处理HTTP/RESTful API的微Web框架,具有高性能和易使用性。
- Pistache:一个高性能的用于Web服务的轻量级C++ RESTful框架,基于Asio。
- SeaStar:一个C++分布式应用程序框架,支持高性能的异步I/O、RPC、数据流、以及多线程任务。
音视频多媒体
- FMOD:易于使用的跨平台的音频引擎和音频内容的游戏创作工具。
- Maximilian:C++音频和音乐数字信号处理库。
- OpenAL:开源音频库—跨平台的音频API。
- Opus:一个完全开放的,免版税的,高度通用的音频编解码器。
- Speex:免费编解码器,为Opus所废弃。
- Tonic:C++易用和高效的音频合成。
- Vorbis:Ogg Vorbis是一种完全开放的,非专有的,免版税的通用压缩音频格式。
- ROXLU:通用C++库,可用于音频、视频、网络和图形方面的编程
- libvpx:VP8/VP9编码解码SDK。
- FFmpeg:一个完整的,跨平台的解决方案,用于记录,转换视频和音频流。
- libde265:开放的h.265视频编解码器的实现。
- OpenH264:开源H.364 编解码器。
- Theora:免费开源的视频压缩格式。
- GStreamer:构建媒体处理组件图形的库。
- LIVE555 Streaming Media:使用开放标准协议(RTP/RTCP, RTSP, SIP) 的多媒体流库。
- libVLC:libVLC (VLC SDK)媒体框架。
- QtAv:基于Qt和FFmpeg的多媒体播放框架,能够帮助你轻而易举地编写出一个播放器。
- SDL:简单直控媒体层。
- SFML:快速,简单的多媒体库。
压缩压缩和归档库
- 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归档的读权限。
并发性并发执行和多线程
- 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++向量表达式模板库。
容器
- C++ B-tree:基于B树数据结构,实现命令内存容器的模板库。
- Hashmaps:C++中开放寻址哈希表算法的实现。
- Google Sparsehash:一个用于C++的高效率稀疏哈希表实现,可用于缓存和高速查找等。
- Tsl Hopscotch Map:一个优化的哈希表实现,可以提高键值对的查找和迭代速度。
- Google BTree:一个高效的C++内存型B-树模板库,可以用于容器类应用程序。
- HdrHistogram:一个用于C++的高动态范围直方图类库,可用于度量和分析系统性能。
- Boost.MultiIndex:一个多关键字容器库,可以用于构建数据库、缓存和索引等应用程序。
- Ttree:一个开源持久化内存btree和xdb的C++实现,支持很强的事务性和容错性。
密码学
- 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的加密算法。
- GmSSL:支持国密SM2/SM3/SM4算法的OpenSSL分支。
数据库,SQL服务器,ODBC驱动程序和工具
- hiberlite:用于Sqlite3的C++对象关系映射。
- Hiredis:用于Redis数据库的很简单的C客户端库。
- LevelDB:快速键值存储库。
- LMDB:符合数据库四大基本元素的嵌入键值存储。
- MySQL++:封装了MySql的C API的C++ 包装器。
- RocksDB:来自Facebook的嵌入键值的快速存储。
- SQLite:一个完全嵌入式的,功能齐全的关系数据库,只有几百KB,可以正确包含到你的项目中。
- FastDB是一款C++作为编写语言的面向对象的关系型数据库管理系统(RDBMS),它是一个高性能、面向对象的数据库系统。
- Firebird SQL:一个功能齐全的跨平台关系数据库管理系统(RDBMS),支持多用户、网络应用程序。
- MongoDB C++ Driver:一个用于MongoDB的C++驱动程序,提供了快速、简单、强大的API来与MongoDB进行交互。
- Couchbase C++ SDK:一个基于C++的框架,用于与Couchbase NoSQL数据库进行通信。
- Cassandra C++ Driver:一个用于Apache Cassandra的C++驱动程序,提供了高性能、易使用、可扩展的API来与Cassandra进行交互。
- OrientDB:一个用于图数据库的C++框架,支持多种存储、多个模型、SQL和API查询等等。
游戏引擎
- Cocos2d-x:一个跨平台框架,用于构建2D游戏,互动图书,演示和其他图形应用程序。
- Grit:社区项目,用于构建一个免费的游戏引擎,实现开放的世界3D游戏。
- Irrlicht:C++语言编写的开源高性能的实时#D引擎。
- Polycode:C++实现的用于创建游戏的开源框架(与Lua绑定)。
- Godot Engine:一款基于C++编写的2D和3D跨平台游戏引擎,具有节点体系结构和可视化编辑器。
- Urho3D:一款用于创建高质量3D游戏的C++游戏引擎,包含各种图形、物理、声音等模块。
- OGRE:一个高性能的3D游戏引擎,用于构建实时应用、模拟和可视化。
- Horde3D:一个基于C++编写的轻量级3D渲染引擎,支持高效的渲染、灯光和物理效果。
- Crystal Space:一个C++游戏引擎,用于创建2D和3D游戏和可视化应用程序。
- Panda3D:一个C++游戏引擎,具有全面的3D图形能力、跨平台支持、内部Python编程语言和可视化开发环境。
- G3D Innovation Engine:一个高性能2D和3D渲染引擎,支持多个平台和大多数操作系统。
图形与图像
- 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和其他平台创建应用程序。
- bgfx:跨平台的渲染库。
- Cairo:支持多种输出设备的2D图形库。
- Horde3D:一个小型的3D渲染和动画引擎。
- magnum:C++11和OpenGL 2D/3D 图形引擎。
- Ogre 3D:用C++编写的一个面向场景,实时,灵活的3D渲染引擎(并非游戏引擎)。
- OpenSceneGraph:具有高性能的开源3D图形工具包。
- Graph-tool:用于网络分析和图形计算的C++库
- Panda3D:用于3D渲染和游戏开发的框架,用Python和C++编写。
- Skia:用于绘制文字,图形和图像的完整的2D图形库。
- urho3d:跨平台的渲染和游戏引擎。
- 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计算机图形学,图像处理和可视化的开源免费软件系统。
国际化
- gettext:GNU gettext。
- IBM ICU:提供Unicode 和全球化支持的C、C++ 和Java库。
- libiconv:用于不同字符编码之间的编码转换库。
- Boost.Locale:一个用于本地化应用程序的C++库,提供多种本地化特性和多样化文化信息的支持。
- libintl:一个C++国际化库,包括多语言支持、字符编码转换和国际化支持等。
- Qt Internationalization:由Qt提供的本地化项目,支持Unicode、多字节编码、本地日期和时间等各种特性。
- Polyglot:一个高效的C++本地化和国际化库,支持多种格式和本地化方案。
- gettext-po:一个广泛使用的C++库,支持多语言的国际化和本地化功能。
- ICU:一个Unicode和全球化支持的C++、C和Java库,提供Unicode字符处理、文本转换、本地化和文化特性等方面的支持。
Json
- frozen:C/C++的Json解析生成器。
- Jansson:进行编解码和处理Json数据的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解析库。
- json:一个现代 C++ JSON解析库。语法更直观,集成更简单,经过严格测试的同时对内存效率、速度有深入地考虑。
日志
- Boost.Log:设计非常模块化,并且具有扩展性。
- easyloggingpp:C++日志库,只包含单一的头文件。
- Log4cpp:一系列C++类库,灵活添加日志到文件,系统日志,IDSA和其他地方。
- templog:轻量级C++库,可以添加日志到你的C++应用程序中。
- spdlog:高性能,只包含头文件。
- Poco::Logging:基于Poco的C++日志库,包括控制台、文件和系统日志等输出方式。
- Loguru:一个轻量级的、头文件级别的C++日志库,提供简单、易用的API。
- G3log:高性能、异步的C++日志库,支持多线程并发写入。
- DlLog:轻量级的C++日志库,提供易用的API和多行支持。
- Yalog:一个简单、快速、高效的C++日志库,提供了快速输出和灵活的日志模式。
网络
- HPSocket:国产网络库的佼佼者基于C++语言开发的高性能网络库,可以用来快速构建高性能可靠的TCP/UDP/HTTP/WebSocket等应用程序。
- 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:高速,模块化的异步通信库。
- OpenMPI:高性能的跨平台消息传递接口库,用于构建并行应用程序
- OpenMesh:一个通用的网格数据结构和算法库,提供了各种网格操作和算法,使得其在许多领域中使用广泛,如计算机动画、机械工程、建筑设计等。
物理学与科学计算
- Box2D:2D的游戏物理引擎。
- Bullet:3D的游戏物理引擎。
- Chipmunk:快速,轻量级的2D游戏物理库。
- LiquidFun:2D的游戏物理引擎。
- ODE:开放动力学引擎-开源,高性能库,模拟刚体动力学。
- ofxBox2d:Box2D开源框架包装器。
- Simbody:高性能C++多体动力学/物理库,模拟关节生物力学和机械系统,像车辆,机器人和人体骨骼。
- LAMMPS:分子动力学模拟框架,支持多种粒子模拟方法
- FFTW:用一维或者多维计算DFT的C语言库。
- GSL:GNU科学库。
- Armadillo:高质量的C++线性代数库,速度和易用性做到了很好的平衡。语法和MatlAB很相似。
- blaze:高性能的C++数学库,用于密集和稀疏算法。
- ceres-solver:来自谷歌的C++库,用于建模和解决大型复杂非线性最小平方问题。
- CGal:高效,可靠的集合算法集合。
- cml:用于游戏和图形的免费C++数学库。
- Eigen:高级C++模板头文件库,包括线性代数,矩阵,向量操作,数值解决和其他相关的算法。
- GMTL:数学图形模板库是一组广泛实现基本图形的工具。
- GMP:用于个高精度计算的C/C++库,处理有符号整数,有理数和浮点数
- Geant4: 粒子探测器模拟引擎。
- libsequence:用于表示和分析群体遗传学数据的C++库。
- SeqAn:专注于生物数据序列分析的算法和数据结构。
- Vcflib:用于解析和处理VCF文件的C++库。
- Wham:直接把联想测试应用到BAM文件的基因结构变异。
脚本
- ChaiScript:用于C++的易于使用的嵌入式脚本语言。
- Lua:用于配置文件和基本应用程序脚本的小型快速脚本引擎。
- luacxx:用于创建Lua绑定的C++ 11 API。
- SWIG:一个可以让你的C++代码链接到JavaScript、Perl、PHP、Python、Tcl和Ruby的包装器/接口生成器。
- V7:嵌入式的JavaScript 引擎。
- V8:谷歌的快速JavaScript引擎,可以被嵌入到任何C++应用程序中。
- AngelScript:一个高度可定制、易于使用和快速的脚本引擎,支持多种编程语言特性,如继承、多态和内存管理。
- Squirrel:一个灵活而强大的脚本引擎,适用于游戏脚本、嵌入式系统和其他应用程序的开发。
- CPython:一个流行的、高效的Python解释器,具有广泛的库和生态系统,支持多种平台和应用程序。
- Duktape:一个小型、快速的嵌入式JavaScript解释器,适用于嵌入式设备和资源受限的环境。
- ChakraCore:微软开发的JavaScript引擎,可用于支持嵌入式脚本编程。
序列化
- 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开发。
- HessianCpp:C++版本的通用二进制协议,用于用于远程过程调用(RPC)和数据序列化等。
- Apache Avro:一种数据序列化系统,旨在支持大型分布式系统中的高阶通信。
- Apache Arrow:一种跨语言的其他格式编码,包括基于列式内存多级别的序列化格式。
- Binn:一种快速、小型、轻量级的二进制格式,可用于网络数据传输和本地存储,支持多种编程语言。
- YAS:一个高速的、可扩展的序列化和反序列化库,支持STL容器和用户自定义数据类型。
- S11n:一种通用的序列化框架,支持其它多个编程语言以及自定义序列化事务的转储、打印和跨语言进行序列化。
虚拟机
- CarpVM:C中有趣的VM,让我们一起来看看这个。
- MicroPython:旨在实现单片机上Python3.x的实现。
- TinyVM:用纯粹的ANSI C编写的小型,快速,轻量级的虚拟机。
- LLVM:一个支持多种编程语言和体系结构的现代化编译器基础架构,包括虚拟机和即时编译器。
- Parrot VM:一个灵活、可扩展、高性能的虚拟机,支持多种编程语言和中间代码格式。
- JUCE:一个跨平台的C++框架,包括虚拟机和音乐合成器,适用于开发多媒体、音频和GUI应用程序。
- QEMU:这是一个功能强大的模拟器和虚拟机,它支持多种处理器架构,并提供了硬件模拟功能。
- Theora:虽然它本身是一个视频压缩格式,但项目也涉及虚拟机技术。它可以作为一个学习虚拟机实现和视频编码技术的开源项目
- Java HotSpot VM:虽然它是Java虚拟机的一个实现,但它的许多部分是用C++编写的。HotSpot VM提供了许多高级功能,如即时编译(JIT)和垃圾回收,这些都是虚拟机技术的重要组成部分。
- Cello:一个类型安全、内存安全的、嵌入式的虚拟机,具有小型、灵活、可扩展的特性。
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++库。
XML
XML是一种用于描述数据的标记语言,经常在计算机应用程序和互联网中被使用。开源的C++项目中一些用于XML的处理和解析的库和工具:
- 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验证解析器。
- Xalan-C++:一个跨平台的XSLT处理器,支持XSLT 1.0、XPath 1.0和XSLT 2.0。
- Expat:一个使用C语言编写的XML解析库,用于解析XML文档和DTD。
- Libstudxml:一个基于C++11的XML解析器,支持Unicode和DTD解析,并具有灵活的扩展性。
- XML Security Library:一个开源的、跨平台的XML安全性库,提供数字签名、加密和XML处理功能。
杂项一些有用的库或者工具,但是不适合上面的分类,或者还没有分类
- 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++包装器。
软件用于创建开发环境的软件
编译器与在线编译器
C/C++编译器列表
- Clang:由苹果公司开发的。
- GCC:GNU编译器集合。
- Intel C++ Compiler:由英特尔公司开发。
- LLVM:模块化和可重用编译器和工具链技术的集合。
- Microsoft Visual C++:MSVC,由微软公司开发。
- Open WatCom:Watcom、C、C++和Fortran交叉编译器和工具。
- TCC:轻量级的C语言编译器。
- codepad:在线编译器/解释器,一个简单的协作工具。
- CodeTwist:一个简单的在线编译器/解释器,你可以粘贴的C,C++或者Java代码,在线执行并查看结果。
- coliru:在线编译器/shell, 支持各种C++编译器。
- Compiler Explorer:交互式编译器,可以进行汇编输出。
- CompileOnline:Linux上在线编译和执行C++程序。
- Ideone:一个在线编译器和调试工具,允许你在线编译源代码并执行,支持60多种编程语言。
- C++ Shell:一个非常简单方便,不需要注册的C++在线编译器,可以显示编译信息,允许使用不同的C++标准,不同的优化选项,并支持stdio.
调试器与测试C/C++调试器列表
- Comparison of debuggers:来自维基百科的调试器列表。
- GDB:GNU调试器。
- Valgrind:内存调试,内存泄露检测,性能分析工具。
- 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++单元测试框架。
集成开发环境(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的根据你敲的代码快速模糊搜索并进行代码补全的引擎。
构建系统
构建系统是一种用于管理软件构建过程的自动化工具。对于同一软件系统的不同版本,构建系统可以自动帮助开发者执行许多繁重的编译、链接、包装等操作。构建系统可实现众多功能
- Bear:用于为clang工具生成编译数据库的工具。
- Biicode:基于文件的简单依赖管理器。
- CMake:跨平台的免费开源软件用于管理软件使用独立编译的方法进行构建的过程。
- CPM:基于CMake和Git的C++包管理器。
- FASTBuild:高性能,开源的构建系统,支持高度可扩展性的编译,缓冲和网络分布。
- Ninja:专注于速度的小型构建系统。
- Scons:使用Python scipt 配置的软件构建工具。
- tundra:高性能的代码构建系统,甚至对于非常大型的软件项目,也能提供最好的增量构建次数。
- tup:基于文件的构建系统,用于后台监控变化的文件。
- Hunter:C++包管理器,可以下载和构建各种C++软件库和工具。
- 一个用于C++依赖管理的开源包管理器,可用于解决构建依赖性问题和库版本控制问题。
- Bakefile:C++构建系统,可生成多种构建系统的脚本,如makefile、Visual Studio项目文件和IDE项目文件等。
- Premake:一个用Lua编写的可扩展的C++构建工具,可用于生成各种构建系统的脚本。
- Bazel:一个用于构建和测试多语言软件的快速、可扩展构建系统,支持多种语言和构建规则。
- Meson:一个用于构建跨平台软件的快速C++构建系统,采用声明式的语法和自动依赖追踪等功能。
静态代码分析提高质量,减少瑕疵的代码分析工具列表
- Cppcheck:静态C/C++代码分析工具。
- include-what-you-use:使用clang进行代码分析的工具,可以#include在C和C++文件中。
- OCLint:用于C,C++和Objective-C的静态源代码分析工具,用于提高质量,减少瑕疵。
- Clang Static Analyzer:查找C,C++和Objective-C程序bug的源代码分析工具。
- iwyu:基于Clang编译器的头文件分析工具,可以查找和修复代码中不必要的头文件。
- Viva64:PVS-Studio公司开发的C/C++代码分析工具,可以识别和修复代码中的瑕疵、安全漏洞和性能瓶颈。
- FlawFinder:查找C/C++代码中的可能安全漏洞和缺陷的符号分析工具,包括代码注入、缓冲区溢出、格式化字符串等。
- scan-build:基于Clang编译器的C/C++静态代码分析工具,可以检测和修复代码中的问题,如内存泄漏、线程问题等。