Skip to content

Latest commit

 

History

History
784 lines (699 loc) · 82.8 KB

README.md

File metadata and controls

784 lines (699 loc) · 82.8 KB

如果您觉得这个项目对您有帮助,就请点右上角的Star按钮为它加星星✨✨ 其他TIOBE Top 20编程语言的中文翻译请看awesome-code-resources。 本项目的原始仓库地址为这里

Awesome C

C好东西的精选清单。此列表包含 open source代码 (由链接的开源定义定义) 和卖家对物质资源来说并不邪恶。

这是在创作共用属性共享许可下发布的,版本4 (SPDX代码)。您可以在许可证文件中找到其文本。

一个重要的注意事项: 这个项目做 索引任何与C相关的; 仅纯C的东西被认为是。

贡献者注意事项: 如果您想提出请求,请阅读this首先。

内容

人工智能

计算机视觉、神经网络、机器学习和其他类似的东西。基本上,如果你的大学称之为AI,它就住在这里。

  • ccv-基于C/缓存/核心计算机视觉库; 现代计算机愿景。
  • Cranium-C99中的便携式,仅标题ANN库。
  • FANN-快速人工神经网络库的实现神经网络。
  • Genann-C89中的简单ANN,没有额外的依赖关系。
  • KANN-两个文件的ANN库。
  • LibDEEP-深度学习库。
  • m2cgen-CLI工具,用于将经过训练的经典ML模型转换为具有零依赖关系的本机C代码。
  • sod-嵌入式计算机视觉和机器学习库。

基准测试

比较跨不同芯片/系统架构的各种子系统的性能。

  • b63-用于C的轻量级微基准测试工具。

构建系统

在C中自动构建和测试项目的工具。

  • Autotools-也称为GNU构建系统 (automake,autoconf,libtool...)是最广泛使用的构建系统之一 (configure & & mdp)。GPL-1.0-or-later
  • Autotools project skeleton-一个简单的autotools骨架 (模板) 快速引导新项目。
  • CMake-设计用于构建,打包和测试的跨平台工具系列软件。
  • GNU Make-控制可执行文件和其他文件生成的工具程序的非源文件。
  • Meson-非常快速,用户友好的构建系统。基于忍者。
  • Premake-命令行实用程序,它读取脚本定义的软件项目,并使用它为Visual Studio和GNU制造。其他目标也正在努力。
  • SCons-使用Python的软件构建工具。
  • xmake-跨平台构建实用程序。
  • zproject-项目生成器和构建系统支持工具。

编译器

编译器,以及编译器和编译相关的工具。

  • ccache-编译器缓存旨在加快重新编译。
  • Clang-LLVM的编译器。支持c11。
  • cproc-使用QBE作为后端的C11编译器。
  • distcc-允许构建在几个之间分发的程序机器。
  • Firm-提供基于图形的中间库表示、优化和汇编代码生成适用于编译器。附带了一个示例C前端下相同执照。
  • GCC-提供C编译器作为其编译器集的一部分。支架C11。
  • PCC-古老的编译器.支持c99。Various licenses,所有开源。

压缩

  • blosc-非常快速,多线程,元压缩器库。各种许可证,都是开源的。
  • Brotli通用无损压缩算法库。有速度与放气相当,但压缩比要高得多。
  • clzip-C版本的高质量数据压缩器Lzip(LZMA实施)。
  • CRoaring-C的实现Roaring bitmaps
  • FiniteStateEntropy-两个高效的压缩编解码器优化对于现代cpu。
  • DENSITY-超快速压缩库。
  • heatshrink-嵌入式和数据压缩/解压缩库实时系统。
  • fast_zlib-改进的zlib,运行速度快2到10倍。
  • fastLZ-快如闪电的无损压缩库 (LZ77型)。可植入小目标,如手臂皮质-M家族。源代码直接可在您的项目 (一对h/c文件),没有动态内存分配。
  • huffandpuff-最小的霍夫曼编码器和解码器。公共领域。
  • libzip-用于读取,创建和修改zip存档的C库。
  • libbzip2-无专利,高质量的数据压缩图书馆。
  • Lizard-前身为LZ5; 快速高效压缩机减压。实现了与zip和zlib相当的压缩比解压速度达到1000MB/s,速度更快。
  • lz4-一个非常快速的压缩算法库。
  • lzo-快速数据压缩库。
  • pixz-平行、索引xz压缩机。
  • shoco-小型文本字符串的压缩器。
  • SIMDComp-用于压缩整数列表的简单库二元包装。在x86上使用SIMD指令。
  • smaz高效的字符串压缩库。
  • squash-压缩抽象库,完成一些公用事业。
  • TurboPFor-最快的整数压缩。
  • TurboRLE-最有效的运行长度编码。
  • zip-真的真的很小的zip存档处理库。
  • Zlib-大规模的spiffy但微妙的不显眼的压缩图书馆。
  • libarchive-libarchive是一个可移植的,高效的C库,可以读取和写入各种格式的流档案。
  • zlib-ng-Zlib替换与优化 '下一代'系统。
  • Zstandard-快速,无损压缩算法,针对实时zlib级别或更高压缩率的压缩方案。

并发性和并行性

  • cchan-用于线程间通道构造的小型库沟通。公共领域。
  • checkedthreads-一个简单的库并行性,内置检查竞争条件。
  • ck-并发原语,安全的内存回收机制和非阻塞数据结构。
  • FCFS RWLock-先到先得的读者/作家锁定POSIX线程。
  • Libaco-一个快速和轻量级的C非对称协联库。
  • libconcurrent-并发编程库,使用协程,用于C11。
  • libcsp受CSP模型影响的高性能并发C库。
  • libdill-使结构化并发编程的库别紧张.
  • libhl-实现线程安全API来管理一系列数据的库结构。还提供了一些支持功能和结构并发和无锁编程。
  • liburcu-数据同步库,随核心数量。
  • mill-Go风格的并发。
  • oclkit-双文件OpenCL包装器。
  • OCL-MLA-OpenCL中级抽象。
  • OpenMP-设计为允许轻松并行化的pragmas集代码。标准 (许可不适用)。
  • Open MPI-消息传递接口实现。
  • pal-数学,并行处理和数据的优化库动。
  • pth-基于非抢占式优先级的便携式实现多个执行线程的调度。
  • pthreads-POSIX线程库。标准 (无许可证适用)。
  • TinyCThread-可移植,C11线程的小型实现API。

加密

主要是众所周知的加密算法的库实现或协议。

  • GNU SASL-实现简单的身份验证和安全性层和几种常见的SASL机制。
  • GnuTLS-安全通信库,实现SSL,TLS和DTLS。
  • libgcrypt-通用加密库,具有一系列可用的密码。
  • OpenSSL-SSL和TLS协议的实现。还包括一个密码学库。Dual Licensed under the OpenSSL License and the SSLeay License
  • liboqs-抗量子密码算法库。
  • libsodium-现代和易于使用的加密库。
  • libtomcrypt-相当全面,模块化和便携式加密工具包。公共领域。
  • mbed TLS-另一个加密实现。
  • MIRACL-多精度整数和有理算术密码库; 用于椭圆曲线加密的SDK。
  • retter-哈希函数,密码,工具,库和与密码学和安全相关的材料。公共领域。
  • s2n-C99实现的TLS/SSL协议,旨在简单,快速和安全作为优先事项。
  • sphlib-各种哈希函数的实现集,包括几个加密的。
  • trezor-crypto-针对嵌入式的高度优化的加密算法设备。
  • bfish-一个包括ansi-c Blowfish ECB加密库。公共域。

数据库

使用C api的数据库和数据存储。

  • BerkeleyDB-用于高性能嵌入式数据库的库键值数据。
  • DuckDB-快速的过程分析数据库,与C API。
  • EJDB2-可嵌入的JSON数据库引擎。
  • Groonga-带全文搜索的柱状存储。
  • Hiredis-Redis的简约客户端库。
  • libmongoc-高性能客户端库MongoDB
  • LMDB-超快速,超紧凑的键值嵌入式数据存储。
  • MySQL-世界上最流行的开源数据库。
  • PostgreSQL-强大的对象关系数据库系统。
  • Redis-高级键值存储。
  • sophia-现代的,可嵌入的键值数据库。
  • sparkey-简单常量键/值存储库设计用于读取-带有不常见的大容量插入物的重负载。
  • SQLite-自包含、无服务器、零配置、事务性SQL数据库引擎。公共领域。
  • UnQLite-自包含、无服务器、零配置、事务性NoSQL引擎。
  • WhiteDB-轻量级数据库库,完全在main中运行记忆。
  • FlashDB-一个超轻量级的数据库,支持键值和时间序列数据。
  • TDengine-高性能的云原生时序数据库。

数据结构

  • C-Macro-Collections-使用宏生成简单和通用的数据结构。
  • CLIST-简单和轻量级dynamic array实施。
  • Collections-C-通用数据结构库。
  • ds-常见的数据结构和算法。
  • igraph-一个图形处理库。
  • kdtree-使用KD树的简单库。
  • libavl-包含一系列自平衡二进制库树。
  • libcdada-用于基本数据结构的小型,可移植,无宏库(列表,设置,映射,队列...) 在C (C后端)。
  • liblfds-便携式无锁数据结构库。公共领域(更确切地说,无论你想要的许可证)。
  • libsrt-软、硬实时数据结构。
  • list.h-单链和双链表函数的实现。
  • M*LIB-用于通用但类型安全的C容器的库。实施为仅标题。
  • offbrand-通用的、引用计数的数据结构的集合。
  • PackedArray-随机访问数组的紧密包装的无符号整数任何所需的宽度。有一个SIMD优化的实现。
  • rb3ptr-红黑树.公开几乎所有的实现原语,因此可以用于场景,如增强,多个兼容的排序功能,等等。
  • uthash-单文件哈希表实现。
  • vector.h-类型化列表的头库。

调试

因为我们有时都必须这样做。用于调试的各种工具更容易或更好,以及允许更好调试的库或代码工作。

  • C-Reduce-工具,需要一个大的C文件与感兴趣的属性并自动生成一个小得多的C文件,该文件具有相同的属性。旨在帮助在复杂的情况下创建最小的bug演示代码。
  • CBMC-C有界模型检查器; 用于验证数组的工具边界、指针安全和用户指定的断言。
  • cflow-分析源文件的集合并打印图形在程序中绘制控制流图。
  • Complexity-用于测量源的复杂性的工具代码。
  • CScout-C的源代码分析器和重构浏览器程序。
  • DDD-一系列命令行的图形前端调试器。
  • debug-一个头库更容易的 “printf调试”。
  • ESBMC-高效的基于SMT的有界模型检查器; 用于验证的工具单线程和多线程程序、用户断言、溢出和指针/内存安全。
  • GDB-GNU项目调试器。
  • lldb-LLVM调试器。
  • rr-记录非确定性执行以允许的调试器确定性调试。
  • Valgrind-动态分析工具的范围,包括泄漏检查员。

文档生成

  • Cxref-在LaTeX,HTML,RTF或生成文档SGML。
  • DocOnce-适度标记的标记语言,可以用来生成一系列格式。
  • Doxygen-事实上的标准工具,用于从生成文档注释的源。可以生成大范围的格式。

编辑者

Fancier,IDE类型的编辑器。如果你想要一个程序员的文本编辑器,看其他地方。此外,无论你使用最有可能支持C反正。

嵌入式脚本引擎

当C不是正确的解决方案,或者当你需要一个更动态的配置引擎:

  • Duktape-可嵌入的Javascript引擎,专注于可移植性和紧凑的足迹
  • MetaCall-跨平台的Polyglot运行时,支持NodeJS,JavaScript,TypeScript,Python,Ruby,C #,Wasm,Java,Cobol等。

框架

提供数据结构和其他你期望的东西的大图书馆“现代” 标准库。

  • APR-Apache便携式运行时; 另一个跨平台实用程序库功能。
  • C Algorithms-常用算法和数据结构的集合。
  • CPL-通用管道库; 一组旨在成为全面、高效和强大的软件工具包。
  • EFL-大量收集有用的数据结构和功能。各种许可证,都是开源的。
  • GLib-实用功能和结构库,旨在便携、高效、功能强大。
  • klib-通用算法的小型和轻量级实现数据结构。
  • libcork-实用功能和结构,设计用于资源受限的系统。可以嵌入。
  • libnih-轻量级的函数库和结构。
  • libU基本实用程序的小库,包括内存分配,字符串操作和日志记录。
  • PBL-大型实用程序库,具有数据结构,其中其他事情。
  • plibsys跨平台系统C库。零第三方依赖项,仅使用本机系统调用。
  • qlibc-简单而强大的库,旨在取代油嘴滑舌,同时专注于小而轻。
  • sc-C的通用库和数据结构。
  • TBOX-具有大量多平台库能力。
  • pspsdk-用于PSP自制开发的开源SDK。Various licences

游戏编程

引擎、库和其他专门用于制作游戏的有用的东西。

  • Allegro-跨平台,视频游戏开发和多媒体图书馆。
  • AssetKit🎨基于COLLADA/glTF规格的3D资产进口商/出口商/实用库
  • astera-C99跨平台2D游戏库
  • cglm-优化的OpenGL/图形数学 (glm) 为C。
  • Chipmunk2D-快速和轻量级的2D游戏物理库。
  • cmt-C绑定/包装苹果的金属图形框架。
  • Corange-纯C游戏引擎。
  • CSFML-绑定为SFML
  • Darkplaces-Quake2引擎的修改版本。
  • Epoxy用于处理OpenGL函数指针管理的库。
  • exengine-C99中的3D游戏引擎,带有起始模板。
  • Flecs-为C89和C99编写的多线程实体组件系统
  • Freecell Solver-用于的库和命令行程序集自动解决纸牌接龙和一些类似的变种。
  • FreeGLUT-OpenGL实用工具工具包的替代方案。允许使用OpenGL上下文创建和管理窗口。
  • GLFW-用于使用OpenGL创建窗口的多平台库上下文。
  • ioquake3-Quake3引擎,终于释放了。
  • kazmath-数学图书馆的游戏。
  • libao-跨平台的音频库与各种各样的输出。
  • librg-纯C99游戏网络库,用于构建简单而优雅的跨平台多人客户端-服务器解决方案。
  • MATHC-用于2D和3D编程的数学库。
  • Orx-便携式,轻量级,基于插件,数据驱动,面向2d游戏引擎。
  • Quake-地震引擎.
  • Quake2-Quake2引擎。
  • raylib-简单易用的图书馆学习视频游戏编程。
  • RetroArch-参考前端libretro
  • SDL2-跨平台库,旨在提供对音频,键盘,鼠标,操纵杆和图形硬件通过OpenGL。
  • sdl-gpu-高性能的现代2D图形库。基于SDL。
  • SIGIL-声音,输入和图形集成库; 一个简单的替代其他库做所有这些事情。各种许可证,全部开源。
  • uastar-最小A * 实现。

图形

C中的图形的编程操作; 如果你想制作一个GUI,图形用户界面部分有你需要的。

  • AssetKit🎨基于COLLADA/glTF规格的3D资产进口商/出口商/实用库
  • Cairo-2D图形库。或者
  • cmt-C绑定/包装苹果的金属图形框架。
  • giflib-用于读取和写入gif图像的库。
  • graphene-图形数据类型的薄层。
  • heman-处理高度图的图像实用程序的微型库,法线贴图,距离场等。
  • libcaca-用于基于终端的接口的ASCII渲染器。
  • libgd-由程序员动态创建图像的库。
  • libimagequant-用于高质量转换的小型便携式库RGBA图像到8位索引彩色图像。
  • libjpeg-turbo-更快的库读取和写入JPEG文件。Various licences
  • libpng-官方PNG参考库。
  • libRSVG-库使用开罗渲染SVG文件。
  • libsixel实现SIXEL协议的库,允许漂亮的终端中的图形。
  • libspng-用于读取和写入PNG文件的更简单的界面。
  • libvips图像处理库。
  • libxmi-用于栅格化2D向量的函数库图形。
  • lightmapper-用于光照贴图烘焙的单文件库,使用现有的OpenGL渲染器。公共领域。
  • little CMS-色彩管理系统。它提供了ICC配置文件之间的快速转换。
  • mozjpeg-改进的JPEG编码器。
  • nanovg-在OpenGL之上的反锯齿2D矢量绘图库,用于UI和可视化。
  • OpenGL-高性能显卡的行业标准,具有本机C绑定。Various licenses
  • PlutoVG-一个独立的二维矢量图形库在C
  • SAIL-⛵人类缺少的小型快速图像解码库 (不适用于机器)

图形用户界面

Widget工具包,或以类似方式使用它们的东西。

  • GTK+-跨平台的小部件工具包。
  • IUP-另一个跨平台的小部件工具包。
  • microui-用便携式ANSI C编写的微型即时模式UI库。
  • nappgui-使用C构建跨平台桌面应用程序的专业SDK。
  • nuklear-小,C89,单标题小部件工具包。公共领域。
  • tinyfiledialogs-用于简单对话框的单文件库。兼容与许多其他工具包和操作系统。
  • Tk-基本的小部件工具包。Tcl/Tk的一部分。
  • XForms Toolkit-为XWindow设计的小部件工具包制。
  • LVGL-嵌入式GUI与易于使用的图形元素,美丽的视觉效果和低内存占用。
  • luigi-用于Win32,X11和Essence的准系统单标题GUI库。

散列

的哈希函数实现 -加密目的。加密哈希可以在Crypto部分中找到。

  • CLHash-库实现可笑的快速CLHash哈希功能。仅适用于Intel Haswell或更新版本。
  • HighwayHash-快速,强大,SIMD-使用哈希函数。还包含SipHash的实现 (尽管速度较慢)。
  • SpookyHash-非常快速的哈希函数。
  • t1ha-快速正哈希-一个便携式,快速的哈希函数。
  • xxHash-非常快速的哈希算法。有32位和64位品种。

学习、参考和教程

一般学习C编程的资源,或与之相关的有用的东西到C编程。

在线参考资源

初学者在线资源

在线中间资源

在线高级资源

参考书

初学者书籍

中级书籍

高级书籍

词法与句法分析

专门用于词法分析 (或词法分析) 和句法分析的库(或解析)。

  • flex-快速词汇分析器生成器。
  • GNU Bison-通用解析器生成器,用于转换将带注释的上下文无关语法转换为一系列解析器。
  • hammer-二进制格式的解析器组合器。
  • mpc-解析器组合程序库。
  • owl-用于可见下推语言的解析器生成器。
  • re2c-词法生成器,生产快速词法分析器,可以访问其内部构件。公共领域。

内存管理

无论是不同的,更快的malloc或彻底的垃圾收集,任何与管理C内存住在这里。

  • Boehm GC-C的垃圾收集。各种许可证,都是开源的。
  • jemalloc-Malloc实现,强调避免碎片和可扩展的并发支持。
  • Lockless Memory Allocator-高效的内存分配器。
  • libcsptr-C的智能指针。
  • rpmalloc-线程缓存,快速内存分配器,自然对齐32字节的边界。公共领域。
  • talloc-分层,参考计数的内存池系统析构函数。
  • tlsf-两级隔离的Fit分配器; 一个通用的、动态的内存分配器旨在满足实时要求。Up-to-dateimplementation

多媒体

  • aubio-音频和音乐分析库。
  • FFMPEG-完整的跨平台解决方案来记录,转换和流音频和视频。
  • GStreamer-音频和视觉媒体的框架。
  • libmpv-音乐播放库。
  • libsndfile-用于读取和写入声音文件的库。支架许多格式。或者
  • libsoundio-跨平台库,实时音频输入和输出。有一系列的后端。
  • libVLC-完整的音频和视频多媒体库编码,解码,播放和流媒体。
  • lodepng-简单的PNG图像解码器和编码器,不需要其他依赖关系。
  • minimp3-轻量级MP3解码器单头库。
  • Soundpipe-轻量级的音乐DSP库。

网络和互联网

低级网络和互联网相关的东西。如果你想要更多的东西全面和高级,您可能需要Web框架部分。

  • asnlc将ASN.1规范编译成C源代码。
  • CHL-C超文本库-用于在中编写web应用程序的库C.
  • czmq-ZeroMQ的高级绑定。
  • Dyad.c-轻量级,简单,异步网络库。
  • GNU adns-先进的,易于使用的,异步功能的DNS客户端库和公用事业。
  • gumbo-parserC99中的HTML5解析库。
  • H20-新一代HTTP服务器。
  • llhttp-HTTP请求/响应解析器。
  • ldns-库,以简化DNS编程。
  • libcurl-客户端URL传输库,支持广泛的格式。
  • LibEtPan-为IMAP提供高效网络的邮件库,SMTP、POP和NNTP。
  • libev-又一个事件循环。
  • libevent-网络服务器的事件循环替换。
  • libhttpd-库将基本的web服务器功能添加到应用程序或嵌入式设备。
  • libhv跨平台事件循环库。
  • libidn-实现Stringprep,Punycode和IDNA规格。
  • libmicrohttpd-小型库,易于运行HTTP服务器作为另一个应用程序的一部分。
  • libnl-是一个库集合,用于将api提供给Netlink协议 (替代ioctl)。它的主要用途是沟通使用linux内核,修改网络状态 (接口,路由等)。
  • libonion-HTTP服务器库,旨在易于使用。
  • libpcap-API提供给各种内核数据包捕获机制。
  • libquickmail-库旨在为开发人员提供一种发送方式电子邮件从他们的应用程序。支持多个收件人/抄送/密件抄送收件人和无大小限制的附件。
  • libsagui-跨平台HTTP服务器库。
  • libuhttpd-一个非常灵活,轻量级和完全异步的HTTP服务器基于libev和http解析器的嵌入式Linux库。
  • LibVNCServer-跨平台库来实现VNC服务器和/或客户端功能。
  • libwebsock-易于使用且功能强大的web套接字库。
  • libzmq-核心ZeroMQ库,高性能异步消息库,旨在在分布式或并发应用程序中使用。C API (后端C)带静态链接异常
  • lwan-实验性、可扩展、高性能HTTP服务器。
  • mongoose-嵌入式web服务器。
  • MQTT-C-适用于嵌入式系统和pc的便携式MQTT C客户端。
  • nanomsg-基于C实现的ZeroMQ。
  • NNG-nanomsg-下一代-轻量级无经纪人消息。
  • oSip-没有额外的SIP实施依赖关系。
  • silgy-用于C/C项目的异步HTTP(S) 引擎。
  • socket99-BSD套接字API的C99包装。
  • twitc-用于与Twitter OAuth API交互的迷你库。
  • uriparser-严格符合RFC 3986的URI解析和处理库。
  • Wslay-WebSocket库。实现WebSocket的版本13协议,如RFC 6455中所述。
  • zyre-基于邻近的对等应用的框架。

数值

  • apophenia-统计和科学计算库。
  • Arb-用于任意精度区间算术的库。
  • ATLAS-自动调整线性代数软件。
  • clBLAS-用OpenCL编写的bla函数。
  • cmathl-数学库与各种各样的数学函数与cmke构建支持。寻求接近C89/C90兼容的便携性。
  • Cuba-多维数值积分库。
  • fft-c-来自netlib的fftpack的高性能傅立叶变换; 以用户友好的格式包装
  • FFTW-西方最快的傅立叶变换; 高度优化的快速傅立叶变换例程。
  • FLINT-数论的快速库; 支持算术的库有数字、多项式、幂级数和矩阵,其中其他人。
  • GLPK-GNU线性编程工具包; 用于解决大规模线性规划、混合整数规划等相关问题。
  • GMP-GNU多精度算术库; 用于任意精度算术。或者
  • GNU MPC·复数算术库
  • GNU MPFR-任意精度浮点库算术。
  • GNU MPRIA-用于多精度有理的便携式数学库区间算术。
  • GSL-GNU科学图书馆; 一个复杂的数字图书馆。
  • KISS FFT简单的快速傅立叶变换库。
  • LAPACKE-接口到LAPACK
  • LibTomMath-便携式、数论、多精度整数图书馆。支持代数、数字操作、模块化归约和各种数论例程。公共领域。
  • LibTomPoly-多项式相关数学库。公共领域。
  • PARI/GP-数论的计算机代数系统; 包括一个编译器到C。
  • PETSc-一套可扩展并行的数据结构和例程用偏微分建模的科学应用的解决方案方程式。
  • SCS-分裂圆锥求解器; 一个数值优化包求解大规模凸锥问题。
  • SLEPc-用于解决大型稀疏特征值的库并行计算机上的问题。
  • TomsFastMath-一套优化的数学运算 (在装配),适合加密使用。公共领域。
  • Yeppp!-快速,SIMD优化的数学库。

剖析

  • gperftools-收集用于测量和改进的实用程序性能。
  • gprof-性能分析工具。GNU binutils的一部分。
  • OProfile-Linux的统计分析器。可以分析任何代码(包括内核!) 低开销,无需重新编译。
  • perf-基于linux内核的分析器,具有很多功能。

PDF

  • pdfioPDFio是一个简单的C库,用于读取和写入pdf文件。

正则表达式

  • Onigmo-Oniguruma的叉子,支持更高级的regexps。
  • Oniguruma-正则表达式库支持广泛的编码,和整合了许多面向安全的修补程序。
  • PCRE-实现与Perl 5。
  • SLRE-超轻正则表达式库; 一个小Perl正则表达式语法子集的实现。
  • TRE-符合POSIX,功能完整的正则表达式库。

序列化

  • binn-二进制序列化格式,意味着紧凑,快速和易于使用。
  • c-capnproto-Cap'n Proto序列化的实现协议。
  • cmp-实施MessagePack序列化协议。
  • flatcc-FlatBuffers编译器和库。
  • libavroAvro数据序列化系统的实现。
  • mpack-另一个实现MessagePack序列化协议。
  • OPIC-C中的对象持久性; 革命性的序列化框架,具有匹配的磁盘上和内存中的表示形式。
  • protobuf-cGoogle协议缓冲区的实现。
  • tpl-小型二进制序列化库。
  • xdr-外部数据表示; 数据的标准序列化。标准 (无许可证适用)。
  • pbtoolsGoogle协议缓冲区C源代码生成器。

源代码集合

小源代码的集合。如果你想要一些大的和集成的东西,检查框架部分。

  • CCAN-以Perl的CPAN为模型,这是一个大的代码集合做的东西。完整列表是here。各种许可证,所有开源。
  • clib-一个包管理器的东西。附带abunch of libraries of its own
  • gnulib-通用GNU代码的集合。各种许可证,所有开源。
  • libdjb-图书馆做各种事情的集合。(显然)公共领域。
  • mmx-单头库的集合。各种许可证,所有开源。
  • par-一堆单文件库。
  • Snippets-有用的代码片段和仅标题库。公共领域。
  • stb-单文件库的范围。公共领域。
  • tinyheaders-仅标题库的集合,主要面向走向游戏开发。
  • zpl-C99跨平台的标题只有库与许多好东西。[,][BSD-3-Clause,取消许可]

标准库

(标准强制) C标准库的实现。

  • Bionic-为Android开发的Google标准库。
  • cloudlibc-基于概念的标准库capability-based security
  • dietlibc-为尽可能小的标准库设计二进制文件。
  • glibc-GNU C库; 标准的实现图书馆。
  • musl-标准库,与POSIX 2008和c11兼容。设计用于静态链接。
  • PDCLib-公共领域C库。实现了大部分的C99和一些C11。
  • uClibc-ng-用于开发嵌入式系统的小型C库。

模板库

  • CTL-C容器模板库 (CTL)

字符串操作

  • bstring-更好的字符串库。
  • ICU-Unicode的国际组件; Unicode库支持。
  • levenstein.c-Levenstein distance算法实现。
  • libunistring-用于操作Unicode的库字符串。
  • libgiconv-文本转换库。
  • librope-UTF-8绳子 ('沉重' 字符串) 库。
  • SDS-简单的动态字符串; 用于处理字符串的库更简单的方法,但一个与正常的C字符串兼容功能。可通过clib
  • stmr.c-Porter Stemmer算法实现。
  • str-另一个用于c语言的字符串库。
  • StringZilla-高达10倍更快的SIMD和SWAR-加速字符串搜索,排序,哈希,编辑距离,对齐和生成器。
  • utf8.h-单头UTF-8库,旨在模仿C风格的字符串功能。公共领域。
  • utf8proc-用于处理UTF-8数据的库。

结构化文件处理

这包括XML、JSON、CSV和其他类似格式的库。

CSV

  • libcsv-简单,流式CSV解析器。

JSON

  • Jansson-用于编码,解码和操作JSON的库。
  • jfes-嵌入式系统的JSON; 简单的JSON引擎,没有任何依赖关系。
  • jsmn-简约的JSON解析器。
  • json-简单,低内存-使用JSON解析器。
  • json-c-在C中轻松使用JSON。附带一个引用计数的对象模型,并以符合RFC 7159
  • json.h-单文件非流式JSON解析器。
  • parson-两个文件,C89-compatible JSON解析器。
  • WJElement-高级JSON操作库,支持JSON架构。或者或者
  • YAJL-快速流JSON解析器库。

INI

  • inih小而简单的ini文件解析器,适合嵌入式系统。
  • iniparser-用于的解析器。ini文件。
  • libconfini-另一个INI解析器。
  • minIni-小而便携的INI解析器。

其他

  • libbson-BSON实用程序库。
  • libcbor: 用于C等的CBOR协议实现。
  • libconfuse小型配置文件解析器库。
  • libelf-用于解析ELF文件的简单库。
  • libucl通用配置库解析器。
  • libxo-允许应用程序生成纯文本,XML,JSON和使用一组通用函数调用的HTML输出。应用程序在运行时决定应该产生什么输出样式。

XML

  • Expat-面向流的XML解析器。MIT
  • libxml2-符合标准,可移植的XML解析器。MIT
  • xml-简单,低内存-使用XML解析器/tokenizer

YAML

  • libYAML-YAML 1.1解析器和发射器。

信号处理

  • libsigrok-信号分析软件套件,支持各种设备类型 (如逻辑分析仪、示波器、万用表等)。[][GPL]

测试

  • CHEAT简单的单元测试框架。
  • Check-单元测试框架。
  • ciut-一个现代的最小麻烦的单元测试框架。
  • clar-清晰和简单的单元测试框架。
  • CMock-模拟/存根生成器。
  • cmocka-支持模拟对象的单元测试框架。
  • Criterion-KISS,非侵入式测试框架。
  • ctest-另一个单元测试框架。
  • CUnit-另一个单元测试框架。
  • greatest-单元测试库在一个文件中,没有内存分配。
  • minctest-单元测试微库。
  • munit小型单元测试框架。
  • Nala-C项目的测试框架。
  • Rexo-C89/C框架,具有自动注册测试和完善的API。
  • Tau-C/C的微型单元测试框架 (〜1k代码行)。包括一组丰富的断言宏,支持自动测试注册,并且可以输出为多种格式,如TAP格式或JUnit XML。支持Linux、macOS、FreeBSD和Windows。
  • theft-基于属性的测试 (类似于Quickcheck)。
  • Unity简单的单元测试框架。
  • utest-单头单元测试库。

文本编辑器扩展

虽然几乎任何体面的程序员的文本编辑器都支持C,但有一些扩展,使它更愉快。这些是由编辑标记的。

  • CCompletion-记事本自动完成插件。与所有作品Ctags识别的标识符。这是一个下载链接。
  • CEDET-Emacs开发环境工具的集合; 旨在向Emacs提供类似IDE的功能。内置。
  • Flycheck-Emacs的现代语法检查。对于C,它可以使用GCC或Clang作为后端。
  • Neomake-异步: Neovim/Vim的制作和linting框架。
  • Syntastic-Vim的语法检查和linting。
  • YASnippetEmacs代码模板系统,以C模板为通用片段。
  • YouCompleteMe-Vim的代码完成引擎。

工具

有用的程序来帮助你编写和调试C代码 编辑,库或编译器。

  • Artistic Style-快速和小型自动源代码格式化程序支持C.
  • address-sanitizer-快速内存错误检测器。
  • bcc-一个字节数组生成器,用于从C中直接导入二进制文件xxd的精神。
  • c-在命令行上一次编译并执行C “脚本”。也有shebang的支持。
  • c99sh-使用hash-bang运行C文件。
  • cdecl-在线服务,将C声明翻译成英文和反之亦然。公共领域。
  • cinclude2dot-图形包括使用项目中的依赖关系Graphviz。GPL-1.0-or-later或者或者
  • ClangCheck-静态分析工具,旨在与Clang一起工作。
  • conan.io-C的包管理器的东西。
  • Cppcheck-静态分析工具。尽管名称,但与C配合良好。
  • Glade-RAD工具,使GTK的快速开发Gui。
  • GMSL-GNU Make标准库; 额外的集合GNU的功能。
  • GNU Global-源代码标记工具。
  • GPP-通用预处理器。比C更通用预处理器,但比m4更灵活。
  • Highlight-将源代码转换为格式化文本与nice突出显示。
  • include-what-you-use-帮助找到不必要的夹杂物,使建议修复它们。基于LLVM/Clang (并且仅适用于它)。
  • incbin-轻松地在C/C应用程序中包含二进制文件
  • indent-自动格式化C源代码,使其更容易阅读。也从一种样式的源转换为另一种样式。
  • SMACK-模块化软件验证工具链和独立的软件验证器。目前仅适用于使用Clang编译的程序。
  • unifdef-删除 # ifdef和 # if指令及其分隔文本不接触文件的任何其他部分。或者

公用事业

任何不适合其他地方的东西的 “全能” 类别。

  • ApeTagLibs-用于处理APEv2标签的库。
  • argparse-命令行参数解析库,灵感来自Python的argparse模块。
  • attr-操作文件系统的命令扩展属性。
  • bfd-用于操作二进制对象文件的库。GNU的一部分binutils。
  • Caffeine-用于为Linux和Linux构建守护进程和服务的库FreeBSD系统。
  • CException-例外的实施。
  • CommonMark-CommonMark规范的实现。
  • cosmopolitan-快速可移植的静态本机textmode容器 (为Linux \ Mac \ Windows一次性构建C程序)Variety of licenses, all open source
  • cpu_features-在运行时获取CPU功能。
  • CRIU-用户空间中的检查点/恢复; 软件工具 (带有C API)用于将正在运行的应用程序 “冻结” 到磁盘,然后恢复它。或者
  • D-Bus-应用程序与一个简单的方法另一个。或者
  • Discount-Markdown解析器的简单实现。
  • dlx-实施Knuth's Algorithm X,有例子解决者。
  • docopt.c-命令行选项解析器的实现。
  • dyncall-另一个外部函数接口库。
  • GNU FreeIPMI-带内和带外IPMI实施。
  • GNU gperf-完美的哈希函数生成器,给定的列表字符串。输出C代码。
  • GNU Libffcall-收集用于建立外国功能的图书馆接口。
  • Hoedown-完全符合标准,支持扩展,UTF-8意识,快速降价解析器。
  • Kitsune-高效,通用的动态软件框架正在更新。
  • libCello-引入更高级别的编程的库C.
  • libcmark-用于解析CommonMark方言的库降价。
  • libcoap-实施Constrained Application Protocol或者
  • libcox-允许跨平台系统调用和跨不同操作系统的标准实用程序。
  • libffi可移植的外函数接口库。
  • libgeohash纯C实现的Geohash算法。
  • libgit2-Git核心方法的可移植实现,作为可重入可链接库。Custom license
  • libgss-通用安全服务。
  • libimobiledevice-跨平台协议库进行通信用iThings。
  • libnfc-独立于平台的近场通信图书馆。
  • libpostal-用于解析和规范化街道地址的库在世界各地。由统计NLP和开放地理数据提供支持。
  • libtrading-实现用于通信的网络协议与交易所、暗池等交易场所。支持FIX,FIX/FAST和许多专有协议。
  • libusb-提供对USB设备的通用访问。
  • libuv-跨平台异步I/O。
  • libvldmail-您友好的电子邮件验证库。没有外部依赖项 (甚至不是regexps)。
  • linenoise-小,独立的替代readline和libedit。
  • libXDGdirs-XDG基目录规范的一种实现
  • MegaMimes-用于获取的库MIME文件的类型。
  • ncurses-彩色终端UI库。
  • netbsd-curses-ncurses的简化和小版本,具有相同的接口。
  • nope.c-用于可扩展服务器端和网络应用程序 (想想C程序员的node.js)。
  • obj.h-单标头支持纯C中的OOP。
  • parg-单文件重新实现更好的默认值。
  • pbc-协议缓冲区库。
  • progressbar-易于使用的库,用于显示文本进度条。
  • rabbitmq-c-客户端库RabbitMQ
  • Ragel-编译为C的状态机的DSL。
  • rmw-安全-删除命令行的实用程序,可以在x天之后从废物目录中清除项目。
  • Rogueutil-用于创建基于文本的用户的跨平台库接口 (TUI)
  • sort-排序例程的集合,其类型专门化于用户定义类型的编译时。
  • termbox-用于编写基于文本的接口的库。
  • tinyexpr-微小的递归下降解析器,编译器和评估用于简单数学表达式的引擎。
  • tm-⏱C的计时器和时间线使用情况。
  • Tulip Indicators-用于技术分析的函数库财务数据。
  • whereami-一个文件库,用于在文件系统。
  • XLSX I/O-用于阅读和写作的跨平台库。xlsx文件。
  • xlsx_drone-快速Microsoft Excel的 *.xlsx阅读器。
  • zlog-可靠的,纯C日志库。
  • zproto-ZeroMQ的协议框架。
  • Metalang99-全面的预处理器元编程。
  • Datatype99-C99的代数数据类型。
  • EasyLogger-一个超轻量级,高性能的C/C日志库。

Web框架

全面和集成的解决方案,用于构建下一个辉煌的web在C中的应用。

  • Concord-用C编写的Discord API包装库。
  • facil.io-web应用程序的迷你框架。包括一个快速的HTTP和Websocket服务器,还支持自定义协议。
  • kcgi-C的CGI和FastCGI库
  • KLone-功能齐全,多平台,web应用程序开发框架,特别针对嵌入式系统和电器。
  • Kore-易于使用的web应用程序框架,用于编写可扩展的web api在C。

Windows环境

旨在使Windows在以下方面投入21世纪的技术支持C。