新手上路
1小时前
主楼
AI ##
计算机视觉、神经网络、机器学习以及其他类似的事物。基本上,如果你的大学称之为 AI,它就属于这里。
- [ccv][195] - 基于 C/Cached/核心计算机视觉库;现代计算机视觉。[BSD-3-Clause]
- [Cranium][525] - C99 标准下的便携式头文件 ANN 库。[MIT]
- [FANN][325] - 快速人工神经网络库;神经网络的一种实现。[GPL-2.0-only]
- [Genann][412] - 简单的 C89 标准 ANN 库,无需额外依赖。[Zlib]
- [KANN][327] - 两文件 ANN 库。[MIT]
- [LibDEEP][477] - 深度学习库。 [BSD-3-Clause]
- [m2cgen][610] - 一个将训练好的经典机器学习模型编译成无依赖的原生 C 代码的命令行工具。 [MIT]
- [sod][611] - 一个嵌入式计算机视觉与机器学习库。 [GPL-3.0-only]
基准测试 ##
比较不同芯片/系统架构下各种子系统的性能。- [b63][553] - 轻量级 C 语言微基准测试工具。[Apache-2.0]
构建系统 ##
用于自动化 C 语言项目构建和测试的工具。- [Autotools][583] - 也称为 GNU 构建系统(automake, autoconf, libtool...),是最广泛使用的构建系统之一(configure && make)。[GPL-1.0-or-later][335]
- [Autotools 项目骨架][584] - 一个简单的 autotools 骨架(模板),用于快速启动新项目。[BSD-2-Clause]
- [CMake][329] - 一套跨平台的工具,用于构建、打包和测试软件。[BSD-3-Clause]
- [GNU Make][324] - 控制程序可执行文件和其他非源文件生成的工具。
- [Meson][368] - 非常快速,用户友好的构建系统。基于 Ninja。[Apache-2.0]
- [Premake][435] - 命令行工具,读取软件项目的脚本定义,并使用它生成 Visual Studio 和 GNU Make 的项目文件。其他目标也在开发中。[BSD-3-Clause]
- [SCons][521] - 使用 Python 的软件构建工具。[MIT]
- [xmake][271] - 跨平台构建工具。[Apache-2.0]
- [zproject][420] - 项目生成器和构建系统支持工具。 [MPL-2.0]
编译器 ##
编译器以及与编译器和编译相关的工具。- [ccache][466] - 设计用于加速重新编译的编译器缓存。
- [Clang][38] - LLVM 的编译器。支持 C11。 [NCSA]
- [cproc][574] - 使用 QBE 作为后端的 C11 编译器。 [ISC]
- [distcc][452] - 允许在多台机器上分布式构建的程序。 [GPL-2.0-or-later]
- [Firm][361] - 提供基于图的中间表示、优化和适用于编译器的汇编代码生成的库。附带一个在相同许可证下的示例 C 前端。 [LGPL-2.1-only]
- [GCC][40] - 提供 C 编译器作为其编译器套件的一部分。支持 C11。
- [PCC][74] - 经典编译器。支持 C99。 [各种许可证][75],全部为开源。
压缩 ##
- [blosc][445] - 极其快速,多线程,元压缩库。各种许可证,全部为开源。
- [Brotli][24] - 通用无损压缩算法库。压缩速度与 DEFLATE 相当,但压缩率更高。[MIT]。
- [clzip][432] - 高质量数据压缩器 [Lzip][433] (LZMA 实现) 的 C 版本。[GPL-2.0-or-later]。
- [CRoaring][481] - [Roaring bitmaps][482] 的 C 实现。[Apache-2.0]。
- [FiniteStateEntropy][2] - 专为现代 CPU 优化的两种高效压缩编解码器。[BSD-2-Clause]。
- [DENSITY][506] - 超高速压缩库。 [BSD-3-Clause]
- [heatshrink][514] - 用于嵌入式和实时系统的数据压缩/解压缩库。 [ISC]
- [fast_zlib][533] - 改进版的 zlib,运行速度比原版快 2 到 10 倍。 [BSD-3-Clause]
- [fastLZ][586] - 极速无损压缩库(LZ77 类型)。可嵌入在 ARM Cortex-M 等小型目标上。源代码可直接嵌入到你的项目中(一对 h/c 文件),无需动态内存分配。 [MIT]
- [huffandpuff][214] - 最小化 Huffman 编码器和解码器。公共领域。
- [libzip][587] - 用于读取、创建和修改 zip 归档文件的 C 库。[BSD-3-Clause]
- [libbzip2][427] - 无专利、高质量数据压缩库。[BSD-4-Clause]
- [Lizard][489] - 曾用名 LZ5;一种高效的压缩器,解压缩速度快。在解压缩速度达到 1000MB/s 及以上的情况下,压缩比可与 zip 和 zlib 相媲美。[BSD-2-Clause]
- [lz4][508] - 极速压缩算法的库。 [BSD-2-Clause]
- [lzo][338] - 快速数据压缩库。 [GPL-2.0-or-later]
- [pixz][49] - 并行、索引式 xz 压缩器。 [BSD-2-Clause]
- [shoco][363] - 小型文本字符串压缩器。 [MIT]
- [SIMDComp][519] - 用于使用二进制打包压缩整数列表的简单库。在 x86 上使用 SIMD 指令。[BSD-3-Clause]
- [smaz][364] - 高效的字符串压缩库。[BSD-3-Clause]
- [squash][393] - 压缩抽象库,包含一些工具。[MIT]
- [TurboPFor][471] - 最快的整数压缩。[GPL-2.0-or-later]
- [TurboRLE][484] - 最高效的行程长度编码。[GPL-2.0-or-later]
- [zip][520] - 真正非常小巧的 zip 归档处理库。[Unlicense]
- [Zlib][230] - 极其出色且巧妙不显眼的压缩库。[BSD-3-Clause]
- [libarchive][548] - libarchive 是一个便携、高效的 C 库,可以读取和写入多种格式的流式归档。[BSD-3-Clause]
- [zlib-ng][1] - 针对下一代系统优化的 Zlib 替代品。 [BSD-3-Clause]
- [Zstandard][510] - 快速的无损压缩算法,旨在实现 zlib 级别或更好的压缩比,适用于实时压缩场景。 [BSD-3-Clause]
并发与并行 ##
- [cchan][243] - 用于线程间通信的通道结构小库。公共领域。
- [checkedthreads][465] - 一个用于并行处理的简单库,内置了竞态条件的检测功能。[BSD-2-Clause]
- [ck][242] - 并发原语、安全的内存回收机制和非阻塞数据结构。[BSD-2-Clause]
- [FCFS RWLock][540] - POSIX 线程的先来先服务读写锁。[CC0-1.0]
- [Libaco][599] - 一个极速且轻量级的 C 语言异步协程库。[Apache-2.0]
- [libconcurrent][390] - 并发编程库,使用协程,适用于 C11。 [BSD-3-Clause]
- [libcsp][572] - 受 CSP 模型启发的高性能并发 C 库。 [MIT]
- [libdill][442] - 使结构化并发编程变得容易的库。 [MIT]
- [libhl][478] - 实现线程安全 API 以管理一系列数据结构的库。 还提供了一些用于并发和锁自由编程的辅助函数和结构。 [LGPL-3.0-only]
- [liburcu][474] - 数据同步库,可随核心数量线性扩展。[LGPL-2.1-or-later]
- [mill][352] - Go 风格的并发。[MIT]
- [oclkit][311] - 两文件 OpenCL 封装。
- [OCL-MLA][312] - OpenCL 中层级抽象。[BSD-3-Clause]
- [OpenMP][37] - 一套用于简化代码并行化的 pragmas。标准(不适用许可)。
- [Open MPI][284] - 消息传递接口实现。[BSD-3-Clause]
- [pal][459] - 优化数学、并行处理和数据移动的库。[Apache-2.0]
- [pth][180] - 多线程执行的非抢占式基于优先级的调度便携式实现。
- [pthreads][146] - POSIX 线程库。标准(无适用许可证)。
- [TinyCThread][115] - 可移植的 C11 线程 API 的小型实现。[Zlib]
加密 ##
主要是著名加密算法的库实现或协议。
- [GNU SASL][160] - 简单认证与安全层(SASL)的实现以及一些常见的 SASL 机制。
- [GnuTLS][112] - 安全通信库,实现 SSL、TLS 和 DTLS。[LGPL-2.1-or-later]
- [libgcrypt][142] - 通用加密库,提供多种可用的加密算法。[LGPL-2.1-or-later]
- [OpenSSL][110] - SSL 和 TLS 协议的实现。还包括一个加密库。[双重许可,采用 OpenSSL 许可证和 SSLeay 许可证][111].
- [liboqs][493] - 用于抗量子密码算法的库。[MIT]
- [libsodium][198] - 现代且易于使用的加密库。[MIT]
- [libtomcrypt][299] - 相对全面的、模块化和可移植的加密工具包。公共领域.
- [mbed TLS][291] - 另一个加密实现。 [Apache-2.0]
- [MIRACL][480] - 多精度整数和有理数算术加密库;一个用于椭圆曲线密码学的 SDK。 [AGPL-3.0-or-later]
- [retter][507] - 一系列散列函数、密码、工具、库和与密码学和安全性相关的材料。公共领域。
- [s2n][359] - TLS/SSL 协议的 C99 实现,设计为简单、快速,并以安全为优先。 [Apache-2.0]
- [sphlib][526] - 各种哈希函数的实现集合,包括一些加密函数。[MIT]
- [trezor-crypto][485] - 针对嵌入式设备高度优化的加密算法。[MIT]
- [bfish][598] - 单个包含 ANSI-C Blowfish ECB 加密库。[公共领域]
数据库 ##
使用 C 语言 API 的数据库和数据存储。- [BerkeleyDB][380] - 用于高性能嵌入式键值数据库的库。[仅 AGPL-3.0 许可]
- [DuckDB][702] - 快速进程内分析数据库,带 C 语言 API。[MIT 许可]
- [EJDB2][568] - 可嵌入的 JSON 数据库引擎。[MIT 许可]
- [Groonga][524] - 列式存储,支持全文搜索。[LGPL-2.1-only]
- [Hiredis][201] - Redis 的极简客户端库。[BSD-3-Clause]
- [libmongoc][233] - 高性能的[MongoDB][234]客户端库。[Apache-2.0]
- [LMDB][105] - 超快、超紧凑的键值嵌入式数据存储。[OLDAP-2.8]
- [MySQL][551] - 全球最受欢迎的开源数据库。[GPL-2.0-only]
- [PostgreSQL][121] - 强大的对象关系型数据库系统。[PostgreSQL]
- [Redis][51] - 高级键值存储。[BSD-3-Clause]
- [sophia][244] - 现代、可嵌入的键值数据库。[BSD-2-Clause]
- [sparkey][509] - 简单的常量键值存储库。设计用于读密集型负载,具有不频繁的大批量插入。 [Apache-2.0]
- [SQLite][22] - 自包含、无服务器、零配置、事务性 SQL 数据库引擎。公共领域。
- [UnQLite][23] - 自包含、无服务器、零配置、事务性 NoSQL 引擎。 [BSD-2-Clause]
- [WhiteDB][512] - 轻量级数据库库,完全在主内存中运行。
- [FlashDB][703] - 一个超轻量级数据库,支持键值和时间序列数据。[Apache-2.0]
- [TDengine][704] - 高性能、云原生时间序列数据库。[仅 AGPL-3.0]
数据结构 ##
- [C-Macro-Collections][550] - 使用宏生成简单通用的数据结构。[MIT]
- [CLIST][371] - 简单轻量级的 [动态数组][25] 实现。 [BSD-2-Clause]
- [Collections-C][406] - 通用数据结构库。 [LGPL-3.0-or-later]
- [ds][541] - 常见数据结构与算法。 [MIT]
- [igraph][544] - 图处理库。 [GPL-2.0-or-later]
- [kdtree][337] - 用于处理 KD 树的简单库。 [BSD-3-Clause]
- [libavl][156] - 包含多种自平衡二叉树的库。
- [libcdada][585] - 一个小巧、可移植、无宏的 C 语言基本数据结构库(列表、集合、映射、队列等)(C++后端)。 [BSD-2-Clause]
- [liblfds][411] - 可移植的无锁数据结构库。公共领域(更准确地说,任何你想要的许可证)。
- [libsrt][305] - 软实时和硬实时数据结构。[BSD-3-Clause].
- [list.h][538] - 单向链表和双向链表函数的实现。[GPL-3.0-only]
- [M*LIB][350] - 通用但类型安全的 C 容器库。实现为头文件。[BSD-2-Clause]
- [offbrand][498] - 通用引用计数数据结构集合。[MIT]
- [PackedArray][241] - 随机访问的紧密打包的无符号整数数组,宽度可任意指定。具有 SIMD 优化的实现。[WTFPL]
- [rb3ptr][561] - 红黑树。暴露几乎所有实现原语,因此可用于增强、多兼容排序函数等场景。[MIT]
- [uthash][273] - 单文件哈希表实现。[BSD-1-Clause]
- [vector.h][154] - 类型化列表的头文件库。[MIT]
调试 ##
因为我们都得偶尔做这件事。各种用于调试的工具更容易或更好,以及允许更好调试的库或代码
工作。
- [C-Reduce][403] - 工具,用于处理一个具有特定属性的较大 C 文件,并自动生成一个具有相同属性但规模小得多的 C 文件。旨在帮助在复杂代码中创建最小化 bug 演示用例。[BSD-3-Clause]
- [CBMC][309] - C 有界模型检查器;用于验证数组边界、指针安全性和用户指定断言的工具。[BSD-4-Clause]
- [cflow][404] - 分析一组源文件,并打印出程序中控制流的图表。
- [Complexity][307] - 用于测量源代码复杂性的工具。
- [CScout][410] - C 程序源代码分析器和重构浏览器。[GPL-3.0 唯一许可]
- [DDD][320] - 多种命令行调试器的图形前端。
- [debug][467] - 更方便的'printf 调试'单头库。[MIT]
- [ESBMC][567] - 高效的基于 SMT 的有界模型检查器;用于单线程和多线程程序、用户断言、溢出以及指针/内存安全的验证工具。[Apache-2.0]
- [GDB][87] - GNU 项目调试器。
- [lldb][468] - LLVM 调试器。[NCSA]
- [Owi][707] - 一种符号执行工具([论文][708])[AGPL-3.0 或更新版本]
- [rr][95] - 调试器,可记录非确定性执行以实现确定性调试。[BSD-2-Clause]
- [Valgrind][85] - 一套动态分析工具,包括内存泄漏检测器。[仅 GPL-2.0 授权]
- [vfs-pipe][710] - 一个头文件库,将内部 C 变量暴露为虚拟文件系统,用于实时检查和调整。[MIT]
文档生成 ##
- [Cxref][317] - 生成 LaTeX、HTML、RTF 或 SGML 格式的文档。[仅 GPL-2.0 授权]
- [DocOnce][322] - 轻量级标记语言,可用于生成多种格式。[BSD-3-Clause]
- [Doxygen][318] - 事实标准工具,用于从注释源生成文档。可生成多种格式。[GPL-2.0-only]
编辑器 ##
更高级、IDE 类型的编辑器。如果你需要程序员的文本编辑器,请查看在别处。此外,无论你使用什么,最有可能的还是支持 C 的。
- [Anjuta DevStudio][42] - GNOME 集成开发环境。[GPL-2.0 唯一许可]
- [Code::Blocks][249] - 可扩展、可配置的集成开发环境,支持 C。[GPL-3.0 唯一许可]
- [CodeLite][45] - 跨平台集成开发环境。[GPL-2.0 唯一许可]
- [Geany][43] - 轻小快速的 IDE。 [GPL-2.0 或更新版本]
- [KDevelop][44] - KDE 的 IDE。 [仅 GPL-2.0]
- [zinjaI][578] - 简单、轻量且功能丰富的 IDE。 [仅 GPL-3.0]
可嵌入的脚本引擎
当 C 不是合适的解决方案,或者当你需要一个更动态的配置引擎时:- [Duktape][591] - 可嵌入的 JavaScript 引擎,专注于可移植性和紧凑的占用空间 [MIT].
- [MetaCall][607] - 跨平台多语言运行时,支持 NodeJS、JavaScript、TypeScript、Python、Ruby、C#、Wasm、Java、Cobol 等 [Apache-2.0].
框架 ##
提供数据结构和其他你期望的库'modern'标准库。
- [APR][78] - Apache Portable Runtime; 另一个跨平台实用函数库。 [Apache-2.0]
- [C 算法][88] - 常见算法和数据结构的集合。 [ISC]
- [CPL][308] - 公共管道库;一套设计为全面、高效和稳健的软件工具包。[仅 GPL-2.0]
- [EFL][119] - 大量有用的数据结构和函数集合。各种许可证,均为开源。
- [GLib][701] - 一套实用函数和数据结构库,设计为可移植、高效和强大。[仅 LGPL-2.1]
- [klib][76] - 常见算法和数据结构的轻量级实现。[MIT]
- [libcork][476] - 资源受限系统设计的实用函数和结构,可嵌入。[BSD-3-Clause]
- [libnih][93] - 轻量级函数和结构库。[GPL-2.0-only]
- [libU][28] - 基本工具库,包括内存分配、字符串操作和日志记录。[BSD-3-Clause]
- [PBL][346] - 大型工具库,包含数据结构等。[LGPL-2.1-or-later]
- [plibsys][588] - 跨平台系统 C 库。零第三方依赖,仅使用原生系统调用。[MIT]
- [qlibc][277] - 简单而强大的库,设计为 GLib 的替代品,同时专注于保持小巧和轻量。[BSD-2-Clause]
- [sc][595] - C 语言的常用库和数据结构。[MIT]
- [TBOX][398] - 具备众多功能的多平台库。[Apache-2.0]
- [pspsdk][620] - 一个用于 PSP 自制软件开发的开放源代码 SDK。[各种许可证][621].
游戏编程 ##
专门用于制作游戏的引擎、库和其他有用工具。- [Allegro][48] - 跨平台的视频游戏开发和多媒体库。[Zlib]
- [AssetKit][571] 🎨 基于 COLLADA/glTF 规范的 3D 资产导入/导出/工具库 [MIT]
- [astera][594] - C99 跨平台 2D 游戏库 [MIT]
- [cglm][542] - 📽 优化的 OpenGL/图形数学 (glm) for C. [MIT]
- [Chipmunk2D][303] - 快速轻量级的 2D 游戏物理库。 [MIT]
- [cmt][570] - 🎮 Apple 的 METAL 图形框架的 C 绑定/包装器。 [MIT]
- [Corange][101] - 纯 C 编写的游戏引擎。 [BSD-2-Clause]
- [CSFML][90] - [SFML][91]的绑定。 [Zlib]
- [Darkplaces][369] - Quake2 引擎的修改版本。 [GPL-2.0-only]
- [Epoxy][414] - 用于处理 OpenGL 函数指针管理的库。[MIT]
- [exengine][618] - C99 编写的 3D 游戏引擎,附带起始模板。[MIT]
- [Flecs][557] - 为 C89 & C99 编写的多线程实体组件系统。[MIT]
- [Freecell Solver][539] - 用于自动解决 FreeCell 及一些类似卡牌纸牌游戏的库和命令行程序。[MIT]
- [FreeGLUT][99] - OpenGL Utility Toolkit 的替代品。允许创建和管理具有 OpenGL 上下文的窗口。[X11]
- [GLFW][98] - 用于创建具有 OpenGL 上下文的窗口的多平台库。[Zlib]
- [ioquake3][107] - Quake3 引擎,终于免费了。[GPL-2.0-only]
- [kazmath][446] - 游戏数学库。[BSD-2-Clause]
- [libao][376] - 跨平台音频库,支持多种输出格式。[GPL-2.0-or-later]
- [librg][558] - 纯 C99 游戏网络库,用于构建简单优雅的跨平台客户端-服务器多人解决方案。[Apache-2.0]
- [MATHC][534] - 用于 2D 和 3D 编程的数学库。[Zlib]
- [Orx][370] - 可移植、轻量级、插件式、数据驱动、面向 2D 的游戏引擎。[Zlib]
- [Quake][225] - Quake 引擎。[GPL-2.0-only]
- [Quake2][221] - Quake2 引擎。[GPL-2.0-only]
- [raylib][516] - 简单易用的库,用于学习游戏编程。[Zlib]
- [RetroArch][231] - [libretro][232]的参考前端。[GPL-3.0-only]
- [SDL2][50] - 跨平台库,旨在通过 OpenGL 提供对音频、键盘、鼠标、摇杆和图形硬件的低级访问。[Zlib]
- [sdl-gpu][457] - 用于高性能、现代 2D 图形的库。基于 SDL。[MIT]
- [SIGIL][429] - 声音、输入和图形集成库;一种用于完成所有这些事情的简单替代方案。各种许可证,均为开源。
- [uastar][535] - 最小化 A*实现。[Zlib]
图形 ##
在 C 语言中对图形进行程序化操作;如果你想要制作 GUI,图形用户界面部分包含你所需要的。
- [AssetKit][571] 🎨 基于 COLLADA/glTF 规范的 3D 资源导入/导出/工具库 [MIT]
- [Cairo][384] - 2D 图形库。[LGPL-2.1-only]或[385]。
- [cmt][570] - 🎮 Apple 的 METAL 图形框架的 C 绑定/包装。[MIT]
- [giflib][401] - 用于读取和写入 gif 图像的库。[MIT]
- [graphene][515] - 图形数据类型的薄层。[MIT]
- [heman][365] - 处理高度图、法线图、距离场等图像工具的微型库。[MIT]
- [libcaca][366] - 基于终端的接口 ASCII 渲染器。[WTFPL]
- [libgd][402] - 程序员动态创建图像的库。[MIT]
- [libimagequant][300] - 用于将 RGBA 图像转换为 8 位索引颜色图像的高质量小型便携库。
- [libjpeg-turbo][193] - 更快的库,用于读取和写入 JPEG 文件。[各种许可证][194].
- [libpng][382] - 官方 PNG 参考库。[Libpng]
- [libRSVG][417] - 使用 Cairo 渲染 SVG 文件的库。[LGPL-2.1-or-later]
- [libsixel][17] - 实现 SIXEL 协议的库,允许在终端中显示精美图形。[MIT]
- [libspng][68] - 用于读取和写入 PNG 文件的更简单的接口。[BSD-2-Clause]
- [libvips][511] - 图像处理库。[LGPL-2.1-or-later]
- [libxmi][174] - 用于光栅化 2D 矢量图形的函数库。
- [lightmapper][444] - 单文件库,用于光照贴图烘焙,使用现有的 OpenGL 渲染器。公共领域。
- [小 CMS][600] - 一种色彩管理系统。它提供 ICC 配置文件之间的快速转换。[MIT]
- [mozjpeg][200] - 改进的 JPEG 编码器。[BSD-3-Clause]
- [nanovg][505] - 基于 OpenGL 的 2D 矢量绘图库,用于 UI 和可视化。[Zlib]
- [OpenGL][147] - 高性能图形的行业标准,具有原生 C 绑定。[各种许可证][148].
- [PlutoVG][590] - 一个用 C 语言编写的独立 2D 矢量图形库 [MIT]
- [SAIL][601] - ⛵ 专为人类设计的小巧快速图像解码库(非机器使用)[MIT]
图形用户界面 ##
小部件工具包,或类似用途的工具。- [GTK+][14] - 跨平台组件工具包。 [LGPL-2.1-only]
- [IUP][16] - 另一个跨平台组件工具包。 [MIT]
- [microui][616] - 用便携式 ANSI C 编写的即时模式 UI 库。 [MIT]
- [nappgui][705] - 专业 SDK,用于使用 C 构建跨平台桌面应用程序。 [MIT]
- [nuklear][408] - 小型、C89 标准、单头文件小部件工具包。公共领域。
- [tinyfiledialogs][426] - 单文件库,用于简单对话框。兼容多种其他工具包和操作系统。[Zlib]
- [Tk][19] - 基础小部件工具包。Tcl/Tk 的一部分。[TCL]
- [XForms Toolkit][21] - 为 XWindow 系统设计的小部件工具包。[LGPL-2.1-only]
- [LVGL][575] - 嵌入式 GUI,具有易于使用的图形元素、美观的视觉效果和低内存占用。[MIT]
- [luigi][614] - 用于 Win32、X11 和 Essence 的精简单头 GUI 库。[MIT]
哈希 ##
用于非加密目的的哈希函数实现。加密哈希可以在加密部分找到。
- [CLHash][495] - 实现了极其快速的 CLHash 哈希函数的库。仅适用于 Intel Haswell 或更新的处理器。[Apache-2.0]
- [HighwayHash][527] - 快速、强大的、使用 SIMD 的哈希函数。也包含 SipHash 的实现(尽管这更慢)。[Apache-2.0]
- [SpookyHash][326] - 极其快速的哈希函数。[BSD-3-Clause]
- [t1ha][530] - 快速正向哈希 - 一种可移植的快速哈希函数。[BSD-3-Clause]
- [xxHash][522] - 极其快速的哈希算法。提供 32 位和 64 位版本。[BSD-2-Clause]
学习、参考和教程 ##
学习 C 语言编程的一般资源,或一些有用的相关信息到 C 编程。
在线参考资源 ###
- [无锁内存分配器的基准测试][450]
- [C FAQ - comp.lang.c 常见问题解答][262]
- [Linux 下 C/POSIX 标准库实现比较][362]
- [C89 标准草案][6]
- [C99 标准草案][258]
- [C11 标准草案][247]
- [寻找最佳的 64 位模拟 PRNG][529]
- [SEI CERT C 编码规范][266]
- [tinyc.game][559] - 可以立即编译和运行的 Tiny C 游戏 http://tinyc.games [MIT]
网络新手资源 ###
- [指针教程][213]
- [便携式 Makefile 教程][528]
- [构建 C 项目][208]
- [C 语言编程维基书][248]
- ['fun' C 简介][279]
- [使用 GDB 学习 C][349]
- [memcpy 与 memmove][205]
- [POSIX 线程编程教程][263](稍显过时,但大部分内容仍然有效且有用)
- [《GNU C 编程教程》][212](在线 PDF)
- [C 语言模板化][267]
- [C 程序员应该了解的内存知识][227]
- [CodeforWin:在线学习 C 编程、数据结构教程和练习][605]
- [学习 C:免费开源的交互式 C 教程][606]
- [如何在 C 语言中编写文字冒险游戏][615]
在线中级资源 ###
- [8 个你应该知道的 gdb 技巧][206]
- [10 C99 技巧][257]
- [一个全面的 MPI 教程资源][454]
- [自己动手写文本编辑器][700]
- [深入并发:尝试互斥锁和原子操作][202]
- [通用 C 引用计数][443]
- [如何编写可移植的 C 而不使你的构建复杂化][490]
- [OpenMP 简介][207] (视频)
- [OpenMP 教程][264] (适用于 OpenMP3 标准)
- [MPI 教程][265]
- [可扩展 C - 编写大规模分布式 C 程序][391]
- [C 语言中一些未知的功能或技巧][374]
- [每个 C 程序员都应该了解的未定义行为][275]
在线高级资源 ###
- [C 语言高级元编程][357]
- [malloc、free、calloc 和 realloc 的实现与调试快速教程][204]
- [位操作技巧][73]
- [为 C 编程语言实现智能指针][240]
- [C 语言中的内联函数][245]
- [在 C 语言中元编程自定义控制结构][343]
- [解决 C 宏的临时存储问题][358]
- [C 的一些阴暗角落][210]
- [编写高效的 C 和 C 代码优化][33]
- [在纯 C99 中编译代数数据类型][608]
参考书籍 ###
- [C: A Reference Manual 5E][181] - C99 的完整参考手册。
- [C in a Nutshell 2E][418] - C11 的简洁参考手册。
- [C Pocket Reference][182] - C99 的简洁参考手册。
- [The C Programming Language 2E][7] - 由其创造者撰写的关于 C 的原始书籍。
入门书籍 ###
- [《C Primer Plus》第 6 版][184] - 完整的 C11 编程教程。
- [《C 语言程序设计:现代方法》][64] - 学习 C 语言基础的优秀书籍。
- [《Head First C》][102] - 采用"Head-first"风格学习 C 的书籍。
中级书籍 ###
- [21st Century C][35] - 好的 C 语言_第二本_编程书籍。
- [Understanding and Using C Pointers][36] - 关于 C 语言指针的深入资源。
- [ZeroMQ][183] - 用于使用 ZeroMQ 的 C 语言书籍。
高级书籍 ###
- [专家级 C 编程:深入 C 的奥秘][55] - 有趣、深入且引人入胜的 C 内部结构探索。
- [现代 C,第三版:涵盖 C23 标准][425] - 在《现代 C,第三版》中,你将学习如何利用最新的工具和技术充分发挥 C 的潜力。
词法分析和解析 ##
专门用于词法分析(或词法分析)和句法分析(或语法分析)。
- [flex][491] - 快速词法分析器生成器。[BSD-2-Clause]
- [GNU Bison][492] - 通用解析器生成器,将带注释的无上下文文法转换为一系列解析器。
- [hammer][356] - 用于二进制格式的解析组合子。 [GPL-2.0-only]
- [mpc][238] - 解析组合子库。 [BSD-2-Clause]
- [owl][576] - 可见式下推语言解析器生成器。 [MIT]
- [re2c][34] - 词法分析器生成器,生成快速词法分析器,可访问其内部实现。公共领域。
内存管理 ##
无论是不同的、更快的 malloc 还是直接的垃圾回收,所有与 C 内存管理相关的内容都包含在这里。
- [Boehm GC][125] - C 语言的垃圾回收。各种许可证,全部开源。
- [jemalloc][293] - 强调避免碎片化和可扩展并发支持的内存分配实现。 [BSD-2-Clause]
- [Lockless Memory Allocator][451] - 高效的内存分配器。
- [libcsptr][66] - C 语言的智能指针。 [MIT]
- [rpmalloc][126] - 线程缓存、快速内存分配器,自然对齐在 32 字节边界上。公共领域。
- [talloc][353] - 层级式、引用计数的内存池系统,支持析构函数。[LGPL-3.0-or-later]
- [tlsf][531] - 两层分离适配器内存分配器;通用型动态内存分配器,设计用于满足实时需求。[最新实现版本][532]。[BSD-3-Clause]
多媒体 ##
- [aubio][523] - 音频和音乐分析库。
- [FFMPEG][63] - 完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。[LGPL-2.1-or-later]
- [GStreamer][123] - 音频和视频媒体框架。[LGPL-2.1-or-later]
- [libmpv][348] - 音乐播放库。[GPL-2.0-or-later]
- [libsndfile][458] - 用于读取和写入声音文件的库。支持多种格式。[LGPL-2.1-only] 或 [LGPL-3.0-only]
- [libsoundio][372] - 跨平台实时音频输入输出库。支持多种后端。[MIT]
- [libVLC][556] - 完整的多媒体库,支持音频和视频的编码、解码、播放和流式传输。[GPL-2.0-only]
- [lodepng][69] - 简单的 PNG 图像解码器和编码器,无需其他依赖。[BSD-3-Clause]
- [minimp3][536] - 轻量级单头 MP3 解码库。[CC0-1.0]
- [Soundpipe][513] - 轻量级音乐 DSP 库。[MIT]
网络与互联网 ##
底层的网络和互联网相关内容。如果你想要更多全面且高级的,你可能需要 Web Frameworks 部分。
- [asnlc][138] - ASN.1 规范编译为 C 源代码的编译器。[BSD-2-Clause]
- [CHL][422] - C 超文本库 - 用于用 C 编写 Web 应用的库。[GPL-3.0-only]
- [czmq][226] - ZeroMQ 的高级绑定。[MPL-2.0]
- [Dyad.c][554] - 轻量级、易用、异步网络库。[MIT]
- [GNU adns][155] - 高级、易用、支持异步的 DNS 客户端库和工具。
- [gumbo-parser][196] - C99 编写的 HTML5 解析库。 [Apache-2.0]
- [H20][127] - 新一代 HTTP 服务器。 [MIT]
- [llhttp][197] - HTTP 请求/响应解析器。 [MIT]
- [ldns][339] - 用于简化 DNS 编程的库。 [BSD-3-Clause]
- [libcurl][65] - 客户端 URL 传输库,支持多种格式。 [curl]
- [LibEtPan][222] - 提供高效网络连接的邮件库,支持 IMAP、SMTP、POP 和 NNTP。 [BSD-3-Clause]
- [libev][144] - 另一个事件循环库。 [BSD-2-Clause]
- [libevent][124] - 网络服务器的事件循环替代方案。 [BSD-3-Clause]
- [libhttpd][166] - 用于向应用程序或嵌入式设备添加基本 Web 服务器功能的库。 [GPL-2.0-only]
- [libhv][564] - 跨平台事件循环库。 [BSD-3-Clause]
- [libidn][164] - 字符串准备、punycode 和 IDNA 规范的实现。
- [libmicrohttpd][165] - 一个小型库,可以轻松地将 HTTP 服务器作为其他应用程序的一部分运行。[LGPL-2.1-or-later]
- [libnl][582] -
libnl是一组提供 Netlink 协议(ioctl 的替代品)API 的库。它的主要用途是与 Linux 内核通信,以修改网络状态(接口、路由等)。[LGPL-2.1-only] - [libonion][170] - 一个易于使用的 HTTP 服务器库。[Apache-2.0]
- [libpcap][566] - 提供各种内核数据包捕获机制的 API。[BSD-3-Clause]
- [libquickmail][399] - 一个旨在为开发者提供从其应用程序发送电子邮件方式的库。支持多个收件人、抄送和密送接收者以及附件,且无大小限制。
- [libsagui][172] - 用于跨平台 HTTP 服务器的库。[LGPL-3.0-or-later]
- [libuhttpd][577] - 基于 libev 和 http-parser 的非常灵活、轻量级且完全异步的嵌入式 Linux HTTP 服务器库。[MIT]
- [LibVNCServer][464] - 用于实现 VNC 服务器和/或客户端功能的跨平台库。[GPL-2.0-or-later]
- [libwebsock][261] - 易用且强大的 web socket 库。[LGPL-3.0-only]
- [libzmq][581] - 核心 ZeroMQ 库,高性能异步消息库,旨在用于分布式或并发应用。C API(后端 C++)静态链接例外
- [lwan][199] - 实验性、可扩展、高性能的 HTTP 服务器。[GPL-2.0-only]
- [mongoose][171] - 嵌入式 web 服务器。[GPL-2.0-only]
- [MQTT-C][549] - 适用于嵌入式系统和 PC 的便携式 MQTT C 客户端。[MIT]
- [nanomsg][139] - ZeroMQ 的 C 语言实现。[MIT]
- [NNG][106] - nanomsg 下一代 - 轻量级无代理消息传递。[MIT]
- [oSip][179] - 无额外依赖的 SIP 实现。[LGPL-2.1-or-later]
- [silgy][579] - 用于 C/C++ 项目的异步 HTTP(S) 引擎。[MIT]
- [socket99][203] - BSD 套接字 API 的 C99 封装。[ISC]
- [twitc][237] - 用于与 Twitter OAuth API 交互的迷你库。[MIT]
- [uriparser][100] - 严格遵循 RFC 3986 的 URI 解析和处理库。[BSD-3-Clause]
- [Wslay][460] - WebSocket 库。实现了根据 RFC 6455 描述的 WebSocket 协议版本 13。[MIT]
- [zyre][419] - 基于邻近性的对等应用程序框架。[MPL-2.0]
数值 ##
- [apophenia][188] - 统计和科学计算的库。[GPL-2.0-only]
- [Arb][497] - 任意精度区间运算库。[LGPL-2.1 或更新版本]
- [ATLAS][137] - 自动调优线性代数软件。[BSD-3-Clause]
- [clBLAS][439] - 使用 OpenCL 编写的 BLAS 函数。[Apache-2.0]
- [cmathl][546] - 具有丰富数学函数的数学库,支持 CMake 构建。力求接近 C89/C90 标准以实现可移植性。[MIT]
- [古巴][316] - 多维数值积分库。[LGPL-3.0-only]
- [fft-c][537] - 来自 netlib 的 fftpack 的高性能傅里叶变换;以用户友好的格式封装。[ MIT]
- [FFTW][70] - 西方最快的傅里叶变换;高度优化的快速傅里叶变换例程。[GPL-2.0-or-later]
- [FLINT][255] - 数论快速库;支持数字、多项式、幂级数和矩阵等的算术运算。[GPL-2.0-or-later]
- [GLPK][159] - GNU 线性规划工具包;一个用于解决大规模线性规划、混合整数规划及其他相关问题的软件包。
- [GMP][79] - GNU 多精度算术库;一个用于任意精度算术的库。[GPL-2.0-only] 或 [LGPL-3.0-only]
- [GNU MPC][175] - 复数算术库。[LGPL-3.0-or-later]
- [GNU MPFR][176] - 任意精度浮点数算术库。[LGPL-3.0-or-later]
- [GNU MPRIA][177] - 多精度有理区间运算的便携式数学库。
- [GSL][47] - GNU 科学库;一个复杂的数值库。[GPL-3.0-only]
- [KISS FFT][71] - 简单快速傅里叶变换库。[BSD-3-Clause]
- [LAPACKE][133] - [LAPACK][134]的接口。[BSD-3-Clause]
- [LibTomMath][461] - 可移植的数论、多精度整数库。支持代数、数字操作、模运算和各种数论例程。公共领域。
- [LibTomPoly][463] - 多项式相关数学库。公共领域。
- [PARI/GP][256] - 数论计算机代数系统;包含 C 语言编译器。[GPL-2.0-or-later]
- [PETSc][282] - 用于可扩展并行求解由偏微分方程建模的科学应用的数据结构和例程套件。[BSD-2-Clause]
- [SCS][483] - 分割锥求解器;用于求解大规模凸锥问题的数值优化软件包。[MIT]
- [SLEPc][283] - 用于在并行计算机上求解大型稀疏特征值问题的库。[LGPL-3.0-only]
- [TomsFastMath][462] - 一组优化的数学运算(汇编语言),适用于加密使用。公共领域。
- [Yeppp!][72] - 快速、SIMD 优化的数学库。[BSD-3-Clause]
性能分析 ##
- [gperftools][295] - 用于测量和提升性能的工具集。 [BSD-3-Clause]
- [gprof][86] - 性能分析工具。GNU binutils 的一部分。
- [OProfile][475] - Linux 的统计性能分析器。可以以低开销且无需重新编译的方式分析任何代码(包括内核!)。 [GPL-2.0-only]
- [perf][375] - 基于 Linux 内核的具有多种功能的性能分析器。[GPL-2.0-only]
PDF ##
- [pdfio][612] - PDFio 是一个用于读取和写入 PDF 文件的简单 C 库。[Apache-2.0]
Regex ##
- [Onigmo][518] - Oniguruma 的分支,支持更高级的正则表达式。[BSD-2-Clause]
- [Oniguruma][517] - 支持多种编码的正则库,并包含许多面向安全的修复。[BSD-2-Clause]
- [PCRE][83] - 与 Perl 5 完全相同的正则表达式实现。[BSD-3-Clause]
- [SLRE][80] - 超轻量级正则表达式库;Perl 正则表达式语法的子集的小实现。[GPL-2.0-only]
- [TRE][82] - 符合 POSIX 标准,功能丰富的正则表达式库。 [BSD-2-Clause]
序列化 ##
- [binn][400] - 二进制序列化格式,旨在紧凑、快速且易于使用。 [Apache-2.0]
- [c-capnproto][130] - Cap'n Proto 序列化协议的实现。 [MIT]
- [cmp][377] - [MessagePack][379] 序列化协议的实现。 [MIT]
- [flatcc][187] - [FlatBuffers][145] 编译器和库。 [Apache-2.0]
- [libavro][140] - Avro 数据序列化系统的实现。 [Apache-2.0]
- [mpack][378] - 另一种 [MessagePack][379] 序列化协议的实现。 [MIT]
- [OPIC][397] - C 语言对象持久化;一个革命性的序列化框架,具有匹配的磁盘和内存表示。
- [protobuf-c][129] - Google Protocol Buffer 的实现。[BSD-2-Clause]
- [tpl][473] - 小型二进制序列化库。[MIT]
- [xdr][131] - 外部数据表示;数据序列化的标准。标准(无适用许可证)。
- [pbtools][555] - Google Protocol Buffers C 源代码生成器。[MIT]
源代码集合 ##
一些小的源代码集合。如果你想要一些大而集成的,可以查看Frameworks 部分。
- [CCAN][103] - 模仿 Perl 的 CPAN,这是一个包含大量能实现各种功能的代码集合。完整列表请见 [这里][104]。各种许可证,均为开源。
- [clib][26] - 类似于一个包管理器。自带 [一系列自己的库][27]。[MIT]
- [gnulib][46] - 常见 GNU 代码的集合。各种许可证,均为开源。
- [libdjb][292] - 包含能实现各种功能的库的集合。(据称)为公共领域。
- [mmx][448] - 单文件库集合。各种许可证,全部开源。
- [par][456] - 一系列单文件库。[MIT]
- [Snippets][220] - 有用的代码片段和仅头文件库。公共领域。
- [stb][114] - 一系列单文件库。公共领域。
- [tinyheaders][108] - 一系列仅包含头文件的库,主要用于游戏开发。[Zlib]
- [zpl][602] - C99 跨平台头文件库,包含许多实用功能。[BSD-3-Clause, Unlicense]
标准库 ##
(标准规定的) C 标准库的实现。- [Bionic][4] - Google 为 Android 开发的标准库。[BSD-3-Clause]
- [cloudlibc][486] - 基于能力式安全概念的标准库。[BSD-2-Clause]
- [dietlibc][9] - 设计用于最小化二进制文件的标准库。[GPL-2.0-only]
- [glibc][57] - GNU C 库;标准库的实现。[LGPL-2.1-only]
- [musl][10] - 标准库,兼容 POSIX 2008 和 C11。专为静态链接设计。[MIT]
- [PDCLib][447] - 公共领域 C 库。实现了大部分 C99 和部分 C11。[CC0-1.0]
- [uClibc-ng][12] - 用于开发嵌入式系统的小型 C 库。[LGPL-2.1-or-later]
模板库
- [CTL][613] - C CONTAINER TEMPLATE LIBRARY (CTL) [MIT]
字符串操作 ##
- [bstring][116] - The Better String Library. [BSD-3-Clause]
- [ICU][67] - International Components for Unicode; a library for Unicode support. [ICU]
- [levenstein.c][360] - [Levenstein distance][334] 算法实现。 [MIT].
- [libunistring][173] - 用于操作 Unicode 字符串的库。 [LGPL-3.0-only]
- [libgiconv][163] - 文本转换库。 [LGPL-2.1-only]
- [librope][479] - UTF-8 绳索('重型'字符串)库。 [MIT]
- [SDS][29] - 简单动态字符串;一个更简单处理字符串的库,但与普通 C 字符串函数兼容。可通过 [clib][26] 获取。[BSD-2-Clause]
- [stmr.c][383] - [Porter 词干提取算法][367] 实现。[MIT]
- [str][587] - 另一个 C 语言的字符串库。[BSD-3-Clause]
- [StringZilla][623] - 最高 10 倍速度的 SIMD 和 SWAR 加速字符串搜索、排序、哈希、编辑距离、对齐和生成器。[Apache-2.0]
- [utf8.h][472] - 单头文件 UTF-8 库,设计为模仿 C 风格字符串函数。公共领域。
- [utf8proc][469] - 用于处理 UTF-8 数据的库。[MIT]
结构化文件处理 ##
这包括用于 XML、JSON、CSV 和其他类似格式的库。CSV ###
- [libcsv][387] - 简单的流式 CSV 解析器。 [LGPL-2.1-or-later]
JSON ###
- [Jansson][53] - 用于编码、解码和操作 JSON 的库。 [MIT]
- [jfes][488] - 嵌入式系统 JSON;无任何依赖的简单 JSON 引擎。[MIT]
- [jsmn][120] - 极简 JSON 解析器。[MIT]
- [json][39] - 简单、低内存使用的 JSON 解析器。[MIT]
- [json-c][8] - 在 C 语言中轻松处理 JSON。包含引用计数对象模型,旨在符合[RFC 7159][11]标准。[MIT]
- [json.h][431] - 单文件非流式 JSON 解析器。 [Unlicense]
- [parson][32] - 双文件、C89 兼容的 JSON 解析器。 [MIT]
- [WJElement][77] - 高级 JSON 操作库,支持 JSON Schema。 [LGPL-2.0-or-later] 或 [LGPL-2.1-or-later] 或 [LGPL-3.0-or-later]
- [YAJL][60] - 快速流式 JSON 解析库。 [ISC]
INI ###
- [inih][547] - 轻量级且简单的 INI 文件解析器,适用于嵌入式系统。[BSD-3-Clause]
- [iniparser][336] - 用于.ini 文件的解析器。[MIT]
- [libconfini][122] - 又一个 INI 文件解析器。[GPL-3.0-only]
- [minIni][109] - 轻量级可移植 INI 解析器。 [Apache-2.0]
其他 ###
- [libbson][235] - BSON 工具库。 [Apache-2.0]
- [libcbor][573]: C 和其他语言的 CBOR 协议实现。 [MIT]
- [libconfuse][135] - 小型配置文件解析库。 [ISC]
- [libelf][310] - 简单的 ELF 文件解析库。 [MIT]
- [libucl][239] - 通用配置库解析器。 [BSD-2-Clause]
- [libxo][407] - 允许应用程序使用一组通用的函数调用生成纯文本、XML、JSON 和 HTML 输出。应用程序在运行时决定应生成何种输出样式。 [BSD-2-Clause]
XML ###
- [Expat][89] - 流式 XML 解析器。 [MIT][MIT]
- [libxml2][62] - 符合标准、可移植的 XML 解析器。 [MIT][MIT]
- [xml][569] - 简单、低内存使用的 XML 解析器/词法分析器。 [MIT]
YAML ###
- [libYAML][341] - YAML 1.1 解析器和发射器。 [MIT]
信号处理 ##
- [libsigrok][601] - 支持多种信号分析软件套件。
测试 ##
- [CHEAT][84] - 简单单元测试框架。[BSD-2-Clause]
- [Check][59] - 单元测试框架。[LGPL-2.1-only]
- [ciut][5] - 一个现代极简的单元测试框架。[MIT]
- [clar][470] - 清晰简单的单元测试框架。[MIT]
- [CMock][297] - 模拟/桩生成器。[MIT]
- [cmocka][141] - 支持模拟对象的单元测试框架。[Apache-2.0]
- [标准][246] - KISS,非侵入式测试框架。[MIT]
- [ctest][503] - 另一个单元测试框架。[Apache-2.0]
- [CUnit][94] - 另一个单元测试框架。[LGPL-2.1-or-later]
- [greatest][58] - 单个文件中的单元测试库,无需内存分配。[ISC]
- [minctest][394] - 微型库单元测试。 [BSD-3-Clause]
- [munit][392] - 小型单元测试框架。 [MIT]
- [Nala][560] - C 项目的测试框架。 [MIT]
- [Owi][707] - 基于符号执行的缺陷查找工具 ([论文][708]) [AGPL-3.0-or-later]
- [Rexo][563] - 支持 C89/C++ 的框架,具有自动测试注册和完善的 API。[Unlicense]
- [Tau][609] - 一个用于 C/C++的微型单元测试框架(约 1k 行代码)。包含丰富的断言宏,支持自动测试
- [盗窃][302] - 基于属性的测试(类似于 [Quickcheck][301])。[MIT]
- [Unity][296] - 简单单元测试框架。 [MIT]
- [utest][386] - 单头文件单元测试库。 [Unlicense]
文本编辑器扩展 ##
虽然实际上任何优秀的程序员的文本编辑器都支持 C,但有一些使其更愉悦的扩展。这些扩展由编辑器标记。
- [CCompletion][92] - Notepad++自动补全插件。可与所有由 Ctags 识别的标识符一起使用。这是一个下载链接。[GPL-2.0 或更晚版本]
- [CEDET][250] - Emacs 开发环境工具集;旨在为 Emacs 提供类似 IDE 的功能。内置。
- [Flycheck][149] - Emacs 的现代语法检查。对于 C 语言,它可以使用 GCC 或 Clang 作为后端。
- [Neomake][441] - 异步 :make 和 linting 框架,适用于 Neovim/Vim。 [MIT]
- [Syntastic][186] - Vim 的语法检查和 linting 工具。 [WTFPL]
- [YASnippet][150] - Emacs 代码模板系统,包含常见片段的 C 模板。
- [YouCompleteMe][151] - Vim 的代码补全引擎。 [GPL-3.0-only]
工具 ##
用于编写和调试 C 代码的实用程序,这些程序*不是*编辑器库或编译器。
- [艺术风格][314] - 快速且小巧的自动源代码格式化工具,支持 C 语言。[LGPL-3.0-only]
- [address-sanitizer][288] - 快速内存错误检测器。 [Apache-2.0]
- [bcc][619] - 一个字节数组生成器,可以直接从 C 语言导入二进制文件,类似于 xxd。 [ISC]
- [c][276] - 在命令行上一次性编译和执行 C "脚本"。也支持 shebang。 [MIT]
- [c99sh][113] - 使用 hash-bang 运行 C 文件。 [BSD-2-Clause]
- [cdecl][347] - 在线服务,用于将 C 语言声明翻译成英文,反之亦然。公共领域。
- [cinclude2dot][280] - 使用 Graphviz 绘制项目中的包含依赖关系图。[GPL-1.0-or-later][335]或[GPL-2.0-or-later]或
- [ClangCheck][502] - 静态分析工具,专为 Clang 设计。[NCSA]
- [conan.io][304] - 类似于 C 语言的包管理器。[MIT].
- [Cppcheck][501] - 静态分析工具。尽管名称如此,但与 C 语言配合使用效果良好。
- [Glade][328] - 快速开发 GTK+图形界面的 RAD 工具。[GPL-2.0-only]
- [GMSL][331] - GNU Make 标准库;GNU Make 的附加功能集合。[BSD-3-Clause]
- [GNU Global][330] - 源代码标记工具。[GPL-3.0-only]
- [GPP][269] - 通用预处理程序。比 C 预处理程序更通用,但比 m4 更灵活。[LGPL-3.0 或更高版本]
- [Highlight][333] - 将源代码转换为带美观高亮的格式化文本。[GPL-3.0 唯一版本]
- [include-what-you-use][289] - 帮助查找不必要的包含项并为其提供修复建议。基于 LLVM/Clang(并且仅与其兼容)。[NCSA]
- [incbin][592] - 轻松在您的 C/C++应用程序中包含二进制文件[无许可]
- [indent][315] - 自动格式化 C 源代码,使其更易于阅读。还可以将源代码从一种风格转换为另一种风格。
- [SMACK][500] - 模块化软件验证工具链和自包含的软件验证器。目前仅适用于使用 Clang 编译的程序。[MIT]
- [unifdef][290] - 移除#ifdef 和#if 指令及其分隔的文本,而不触动文件的任何其他部分。[BSD-3-Clause]或[BSD-2-Clause]
实用工具 ##
一个用于容纳任何不适合归入其他类别的"万能"类别。- [ApeTagLibs][345] - 用于处理 APEv2 标签的库。 [MIT]
- [argparse][413] - 命令行参数解析库,受 Python 的 argparse 模块启发。 [MIT]
- [attr][425] - 用于操作文件系统扩展属性的命令。 [GPL-2.0-or-later]
- [bfd][157] - 用于操作二进制目标文件的库。GNU binutils 的一部分。
- [Caffeine][496] - 用于为 Linux 和 FreeBSD 系统构建守护进程和服务的库。[LGPL-2.1-or-later]
- [CException][298] - 异常的实现。[MIT]
- [CommonMark][223] - CommonMark 规范的实现。
- [cosmopolitan][597] - 快速便携静态原生文本模式容器(一次性为 Linux\Mac\Windows 构建 C 程序)[多种许可证,全部开源][224].
- [cpu_features][319] - 在运行时获取 CPU 特性。[Apache-2.0].
- [CRIU][440] - 用户空间检查点/恢复;一个软件工具(带有 C API),用于将正在运行的应用程序“冻结”到磁盘,然后恢复它。[仅 GPL-2.0]或[仅 LGPL-2.1]
- [D-Bus][430] - 应用程序之间简单通信的方式。[AFL-2.1]或[GPL-2.0 或更新版本]
- [折扣][438] - Markdown 解析器的简单实现。 [BSD-3-Clause]
- [dlx][388] - [Knuth's Algorithm X][389] 的实现,附带示例求解器。
- [docopt.c][270] - 命令行选项解析器的实现。 [MIT]
- [dyncall][281] - 另一个外部函数接口库。 [MIT]
- [GNU FreeIPMI][158] - 带内和带外 IPMI 实现。[GPL-3.0-only]
- [GNU gperf][351] - 完美哈希函数生成器,给定一个字符串列表。输出 C 代码。
- [GNU Libffcall][162] - 用于构建外部函数接口的库集合。
- [Hoedown][405] - 完全符合标准、支持扩展、UTF-8 兼容、快速 Markdown 解析器。[MIT]
- [Kitsune][355] - 高效、通用的动态软件更新框架。[LGPL-3.0-or-later]
- [libCello][96] - 引入高级编程到 C 的库。[BSD-3-Clause]
- [libcmark][436] - 用于解析 CommonMark 方言的 Markdown 的库。[BSD-2-Clause]
- [libcoap][136] - [受限应用协议][117]的实现。[GPL-2.0-or-later]或[BSD-2-Clause]
- [libcox][373] - 允许跨平台系统调用和在不同操作系统上提供标准工具的库。[BSD-2-Clause]
- [libffi][128] - 可移植的外部函数接口库。[MIT]
- [libgeohash][499] - Geohash 算法的纯 C 语言实现。[BSD-3-Clause]
- [libgit2][61] - 作为可重入链接库提供的 Git 核心方法的可移植实现。[自定义许可][41].
- [libgss][161] - 通用安全服务。
- [libimobiledevice][354] - 跨平台协议库,用于与 iThings 通信。 [LGPL-2.1-or-later]
- [libnfc][332] - 平台无关的近场通信库。 [LGPL-3.0-only]
- [libpostal][434] - 用于解析和标准化全球街道地址的库。由统计 NLP 和开放地理数据支持。 [MIT]
- [libtrading][455] - 实现用于与交易所、暗池和其他交易场所通信的网络协议。支持 FIX、FIX/FAST 和许多专有协议。[BSD-2-Clause]
- [libusb][306] - 提供对 USB 设备的通用访问。[LGPL-2.1-or-later]
- [libuv][56] - 跨平台异步 I/O。[MIT]
- [libvldmail][3] - 您友好的电子邮件验证库。无外部依赖(甚至没有正则表达式)。[WTFPL]
- [linenoise][504] - readline 和 libedit 的小型、自包含替代品。[BSD-2-Clause]
- [libXDGdirs][589] - XDG 基础目录规范的实现 [MIT]
- [MegaMimes][31] - 获取文件[MIME][30]类型的库。[MIT]
- [ncurses][178] - 带颜色的终端 UI 库。[MIT]
- [netbsd-curses][494] - ncurses 的简化和小型版本,具有相同的接口。[BSD-3-Clause]
- [nope.c][209] - 超轻量级软件平台,适用于可扩展的服务器端和网络应用程序(C 程序员的 node.js)。[GPL-2.0-only]
- [obj.h][580] - 单头文件支持纯 C 中的面向对象编程。[MIT]
- [parg][274] - 单文件重新实现`
getopt`,具有更好的默认值。[CC0-1.0] - [pbc][236] - Protocol buffers 库。 [MIT]
- [progressbar][453] - 易于使用的库,用于显示文本进度条。 [BSD-3-Clause]
- [rabbitmq-c][228] - [RabbitMQ][229]的客户端库。 [MIT]
- [Ragel][54] - 编译为 C 语言的状态机 DSL。 [GPL-2.0-only]
- [rmw][622] - 命令行安全删除工具,可在 x 天后从您的废纸篓目录中清除项目。
- [Rogueutil][565] - 跨平台库,用于创建基于文本的用户界面 (TUI) [Apache-2.0]
- [sort][190] - 一组排序例程,在编译时使用用户定义的类型进行类型特化。 [MIT]
- [termbox][396] - 用于编写基于文本界面的库。 [MIT]
- [tinyexpr][395] - 轻量级递归下降解析器、编译器和简单数学表达式求值引擎。[BSD-3-Clause]
- [tm][543] - ⏱ C 语言计时器和时间轴工具。[MIT]
- [Tulip Indicators][449] - 用于金融数据技术分析的函数库。[LGPL-3.0-or-later]
- [whereami][167] - 单文件库,用于定位当前可执行文件在文件系统中的位置。[WTFPL]
- [XLSX I/O][344] - 跨平台库,用于读取和写入 .xlsx 文件。[MIT]
- [zlog][437] - 可靠的、纯 C 日志库。[LGPL-2.1-only]
- [zproto][421] - ZeroMQ 的协议框架。[MIT]
- [Metalang99][603] - 成熟的前端处理器元编程。 [MIT]
- [Datatype99][604] - C99 的代数数据类型。 [MIT]
- [EasyLogger][706] - 超轻量级、高性能的 C/C++日志库。 [MIT]
- [microlog][709] - 可扩展和可配置的日志库,适用于嵌入式和桌面 [MIT]
Web 框架 ##
为构建下一个卓越的网页提供全面且综合的解决方案C 语言中的应用。
- [Concord][617] - 一个用 C 语言编写的 Discord API 封装库。[MIT]
- [facil.io][118] - Web 应用程序的微型框架。包含快速 HTTP 和 Websocket 服务器,同时也支持自定义协议。[MIT]
- [kcgi][562] - C 语言的 CGI 和 FastCGI 库 [ISC].
- [KLone][423] - 功能全面、多平台的 Web 应用程序开发框架,特别针对嵌入式系统和设备。[BSD-3-Clause]
- [Kore][415] - 易于使用的 C 语言 Web 应用程序框架,用于编写可扩展的 Web API。[ISC]
Windows 环境 ##
旨在将 Windows 带入 21 世纪的科技,在以下方面:支持 C。
- [Cygwin][253] - 设计用于在 Windows 下广泛模拟 POSIX 兼容环境。[各种许可,均为开源][254].
- [MinGW-w64][287] - Windows 上用于 64 位支持的 C 开发最小化环境。[各种许可证,全部开源][252].
- [MSYS2][428] - 最小化 SYStem 2;旨在为 Windows 提供 POSIX 环境支持,基于 Arch Linux 的 pacman 的包管理器。软件包具有单独的许可证,否则,与 MinGW 和 Cygwin 相同。