awesome-c ¶
C 好东西的精选列表. 此列表包含仅 free software 对于代码,以及对物理资源不邪恶的卖家.
寻找维护者:这个列表目前几乎不活跃. 我正在寻找可以让它再次变得伟大的维护者. 看 #26 了解更多信息,但过程很简单:添加或修复此列表中的一些内容,您将成为 850+ 星列表的贡献者.
此列表以前由维护 @kozross . 他决定将列表切换为 new platform,所以我决定分叉它,这样我们就可以将它保存在 GitHub 上.
Contents¶
Build Systems¶
这些是用于自动构建和测试 C 项目的工具.
- aimake - 旨在避免复杂配置的构建工具.
GNU GPL3 or later
- Autoconf - 可扩展的 M4 宏包,可生成 shell 脚本以自动配置软件源代码包. Autotools 的一部分.
GNU GPL3 or later
- Automake - 自动生成符合 GNU 编码标准的“Makefile.in”文件的工具. 需要使用 Autoconf. Autotools 的一部分.
GNU GPL3 or later
- CMake - 用于跨平台构建、测试和打包的工具.
3-clause BSD
- Jam - 构建系统,旨在比制作更容易. 隐式理解 C 构建规则.
Jam License
- Libtool - 通用库支持脚本. Autotools 的一部分.
GNU GPL3 or later
- Meson - 极其快速、用户友好的构建系统. 基于忍者.
Apache 2.0
- Premake - 为 Visual Studio、Xcode 或 GNU Make 等工具集构建脚本生成器.
3-clause BSD
- Ninja - 专注于速度的小型、简单的构建系统.
Apache 2.0
- Bazel - 为各种操作系统和目标构建系统.
Apache 2.0
- Buck - 构建由 Facebook 创建和使用的系统.
Apache 2.0
- Qbs - 用于软件项目的现代构建工具.
LGPL3
- qmake - 构建包含在 Qt 框架中的系统.
GNU GPL3 with Qt Exception
- xmake - 基于 lua 的跨平台构建实用程序.
Apache 2.0
Compilers¶
- Clang - 用于 LLVM 的 C 编译器. 支持 C11.
NCSA
- CompCert - 完全验证的 C 编译器. 支持几乎所有的C89.
GNU GPL2.1 or later
- GCC - 提供 C 编译器作为其编译器集的一部分. 支持 C11 和 OpenMP.
GNU GPL3 or later
- PCC - 可敬的 C 编译器. 支持 C99.
Various free licenses
- TCC - 微型 C 编译器; 一个小而快速的 C 编译器. 支持 C99(复杂类型除外).
GNU LGPL2.1
- Intel SPMD - C 语言变体的编译器,用于单程序、多数据编程.
Various licenses
- ccache - 旨在加速重新编译的编译器缓存.
GNU GPL3 or later
Compiler libraries¶
用于编译器、解释器和低级别项目的库.
- yasm - Yasm Modular Assembler Project.
2-clause BSD
Compression¶
- libzip - 用于读取、创建和修改 zip 存档的 AC 库.
3-clause BSD
- lzo - 非常快速的数据压缩库.
GNU GPL2.1
- zlib - 非常漂亮但精致不显眼的压缩库.
3-clause BSD
- bzip2 - 无专利的高质量数据压缩器.
3-clause BSD
- lz4 - 快速压缩算法.
- snappy - 快速压缩库(在 C++ 中实现,本地绑定到 C).
- zstd - 快速实时压缩算法
3-clause BSD
- quicklz - 快速压缩库.
GNU GPL2.1
- pixz - Pixz(发音为 pixie)是
xz
的并行索引版本.2-clause BSD
Crypto¶
- GnuTLS - 安全通信库,实现 SSL、TLS 和 DTLS.
GNU LGPL2.1 or later
- libgcrypt - 通用密码学库,具有一系列可用密码.
GNU LGPL2.1or later (code)
和GNU GPL2.1 or later (manual 和 tools)
- OpenSSL - SSL 和 TLS 协议的实施,还包括一个加密库.
Dual Licensed under the OpenSSL License and the SSLeay License
- libsodium - 现代且易于使用的加密库.
Expat
- libtomcrypt - 相当全面、模块化和便携的加密工具包.
Public Domain
- mbed TLS - C 的另一个加密实现.
Apache 2.0
- libressl - OpenSSL 的现代化分支.
Various Licenses
Database¶
这列出了具有 C API 的数据库和数据存储.
- BerkeleyDB - 用于键值数据的高性能嵌入式数据库库.
GNU AGPLv3
- Hiredis - Redis 的简约客户端库.
3-clause BSD
- LMDB - 超快速、超紧凑的键值嵌入式数据存储.
OpenLDAP License
- MariaDB - 强大、可扩展且可靠的 SQL 服务器,旨在成为 MySQL 的直接替代品.
3-clause BSD
- mongo-c-driver - 高性能客户端库 MongoDB.
Apache 2.0
- PostgreSQL - 强大的对象关系数据库系统.
PostgreSQL licence
- recutils - 一组工具和一个 C 库,用于访问称为 recfiles 的人类可编辑的纯文本数据库文件.
GNU GPL3 or later
- Redis - 高级键值存储.
3-clause BSD
- sophia - 现代、可嵌入的键值数据库.
FreeBSD
- SQLite - 具有 C 接口的独立、无服务器、零配置、事务性 SQL 数据库引擎.
Public Domain
- UnQLite - 具有 C 接口的独立、无服务器、零配置、事务性 NoSQL 引擎.
FreeBSD
Deep Learning¶
- Darknet - 用 C 和 CUDA 编写的开源神经网络框架. 它速度快,易于安装,并支持 CPU 和 GPU 计算.
Documentation Generation¶
- Cxref - 生成 LaTeX、HTML、RTF 或 SGML 格式的 C 程序文档.
GNU GPL2.1
- DocOnce - 适度标记的标记语言,可用于生成一系列格式.
3-clause BSD
- Doxygen - 用于从注释源生成 C 文档的实际标准工具. 可以生成多种格式.
GNU GPL2.1
- GTK-Doc - 用于从注释源生成 C 文档的工具. 支持 Autotools.
GNU GPL2.1 (code)
或者GNU FDL1.1
Editors¶
这些是特别高级的 IDE 类型的编辑器. 如果您想要程序员的文本编辑器,请查看其他地方. 此外,无论您做出什么选择,最有可能支持 C.
- Anjuta DevStudio - GNOME IDE.
GNU GPL2.1
- Code::Blocks - 支持 C 的可扩展、可配置 IDE.
GNU GPL3
- CodeLite - 跨平台集成开发环境.
GNU GPL2.1
- Eclipse - 用 Java 编写的 IDE.
EPL
- Geany - 非常小而快速的 IDE.
GNU GPL2.1 or later
- KDevelop - 它的去向.
GNU GPL2.1
- Qt Creator - 使用 C++ 和 Qt 编写的跨平台 IDE,是 Qt SDK 的一部分. 支持 Clang 代码模型.
GNU GPL3 with Qt exception
- Visual Studio Code - 代码编辑,重新定义. 视觉工作室代码.
Embedded Systems¶
这些项目允许人们使用微控制器和其他资源受限的架构.
RTOS¶
实时操作系统 (RTOS) 旨在服务于以低延迟延迟处理数据的实时应用程序.
- Amazon FreeRTOS - 用于微控制器的 RTOS,可使小型低功耗边缘设备易于编程.
MIT
- ChibiOS - 具有完整开发环境(HAL、驱动程序、支持文件和工具)的 RTOS.
Various Licenses
- Contiki - 将低成本、低功耗的微控制器连接到互联网.
3-clause BSD
- Zephyr Project - 可扩展的实时 RTOS,支持多种硬件架构,针对资源受限的设备进行了优化.
Apache 2.0
- RIOT OS - 实时多线程操作系统,支持物联网中常见的一系列设备.
LGPL-2.1
Environments¶
这是一个技术列表,旨在将 Windows 带入 21 世纪,支持 C.
- Cygwin - 旨在在 Windows 下广泛模拟 POSIX 兼容环境.
Various Licenses
- MinGW-w64 - 支持 64 位的 Windows 上 C 语言开发的极简环境.
Various Licenses
Frameworks¶
本节有大型库,提供数据结构和您期望“现代”标准库提供的其他内容.
- APR - Apache 便携式运行时; 另一个跨平台实用函数库.
Apache 2.0
- C Algorithms - C的常用算法和数据结构的集合.
ISC
- C Macro Collections - 仅标头、宏生成、通用且类型安全的 C 集合.
MIT
- CPL - 通用管道库; 一组库,旨在成为一个全面、高效和强大的软件工具包.
GNU GPL2.1
- EFL - 大量有用的数据结构和函数.
- GLib - 实用功能和结构库,旨在便携、高效和强大.
GNU LGPL2.1
- GIO - 现代且易于使用的 VFS API.
GNU LGPL2.1
- GObject - C 的面向对象系统和对象模型.
GNU LGPL2.1
- libnih - C 函数和结构的轻量级库.
GNU GPL2.1
- libU - 基本实用程序的小型库,包括内存分配、字符串操作和日志记录.
3-clause BSD
- PBL - 大型实用程序库,具有数据结构等功能.
GNU LGPL2.1 或者 later (library)
或者GNU GPL2.1 或者 later (test code)
- qlibc - 简单而强大的 C 库,旨在作为 GLib 的替代品,同时专注于小巧轻便.
qLib license
(如同FreeBSD
) - stb - C 的单文件库范围.
Public Domain
- libsrt - C 的安全实时库.
3-clause BSD
Game Programming¶
Engines¶
这些是作为 C 游戏编程代码的示例提供的.
- Corange - 纯 C 语言的游戏引擎.
FreeBSD
- Darkplaces - Quake2 引擎的修改版本.
GNU GPL2.1
- ioquake3 - Quake3 引擎,终于解放了.
GNU GPL2.1
- Orx - 便携式、轻量级、基于插件、数据驱动、面向 2D 的游戏引擎.
zlib
- Quake - 地震引擎.
GNU GPL2.1
- Quake2 - Quake2 引擎.
GNU GPL2.1
- Spearmint - 专为 FPS 游戏设计的引擎.
GNU GPL3 or later
Resources¶
这些是对游戏编程有用的各种库.
- Allegro - 跨平台、视频游戏开发和多媒体库.
zlib
- Chipmunk2D - 快速轻量级的 2D 游戏物理库.
Expat
- CSFML - 绑定 SFML 在 C.
zlib
- FreeGLUT - 替代 OpenGL 实用工具包. 允许使用 OpenGL 上下文创建和管理窗口.
X11
- GLFW - 用于使用 OpenGL 上下文创建窗口的多平台库.
zlib
- libao - 具有多种输出的跨平台音频库.
GNU GPL2.1 or later
- RetroArch - 参考前端 libretro.
GNU GPL3
- SDL and SDL2 - 跨平台开发库,旨在通过 OpenGL 提供对音频、键盘、鼠标、操纵杆和图形硬件的低级访问. SDL2 是最新版本.
zlib
- raylib - 用于学习视频游戏编程的简单易用的库.
zlib
Generic Programming¶
Graphics¶
- Cairo -2D图形库.
GNU LGPL2.1
或者MPLv1.1
- Cogl - GPU 图形和实用程序 API.
Expat
- Clutter - 基于 OpenGL 的 UI 库.
GNU LGPL2.1
- giflib - 用于阅读和编写 gif 图像的库.
MIT
- heman - 处理高度贴图、法线贴图、距离场等的小型图像实用程序库.
Expat
- libcaca - 用于基于终端的界面的 ASCII 渲染器.
WTFPLv2
- libimagequant - 用于将 RGBA 图像高质量转换为 8 位索引彩色图像的小型便携式库.
FreeBSD
- libjpeg-turbo - 用于读取和写入 JPEG 文件的更快的库.
Various Licenses
- libpng - 官方 PNG 参考库.
libpng license
- libxmi - 用于光栅化 2D 矢量图形的函数库.
GNU GPL3 or later
- mozjpeg - 改进的 JPEG 编码器.
3-clause BSD
Graphic APIs¶
- OpenGL - 行业采用 2D 和 3D 图形 API. 更多资源在 awesome-opengl.
- OpenGL ES - 业界为移动和嵌入式设备采用了 2D 和 3D 图形 API.
- OpenGL SC - 需要系统安全认证的行业的图形和计算标准.
- Vulkan - 用于现代跨平台开发的显式图形和计算 API. 更多资源在 awesome-vulkan.
Graphical User Interface¶
这些是专门 widget toolkits.
- GTK+ - 跨平台小部件工具包.
GNU LGPL2.1
- IUP - 另一个跨平台小部件工具包.
Expat
- Tk - 基本的小部件工具包. Tcl/Tk 的一部分.
Tcl/Tk License
- XForms Toolkit - 为 XWindow 系统设计的 Widget 工具包.
GNU LGPL2.1
- nuklear - 单头 ANSI C gui 库.
Public Domain
- libui - 简单且可移植(但并非不灵活)的 GUI 库.
MIT
- LCUI - 用于使用 C、XML 和 CSS 构建用户界面的小型 C 库.
MIT
Hashing¶
所有与哈希相关的库,无论是否加密.
- jwHash - 快速哈希表实现.
Apache 2.0
- xxHash - 极快的非加密散列算法.
2-clause BSD
- murmur - MurMur 散列的 C 实现.
Public Domain
- t1ha - 快速正哈希库.
zlib
Image Processing¶
- libccv - 现代计算机视觉库.
3-clause BSD
JSON¶
- Jansson - 用于编码、解码和操作 JSON 的 C 库.
Expat
- jsmn - 简约的 JSON 解析器.
Expat
- json-c - 用于处理 JSON 的库.
Expat
- WJElement - 高级 JSON 操作库,支持 JSON Schema.
LGPL, any version
- YAJL - 快速 C JSON 流解析器库.
ISC
Learning, Reference and Tutorials¶
This is a list of resources for learning C programming in general, or something useful relating to C programming.
Online¶
Reference¶
- SEI CERT C Coding Standard
- C FAQ - comp.lang.c Frequently Asked Questions
- Comparison of C/POSIX standard library implementations for GNU/Linux
- GNU C Reference Manual
- Robert Pike's notes on programming in C
- Draft ANSI C Rationale
- Draft C99 Rationale
Language Standards¶
Beginner¶
- Tutorial on pointers
- Building C Projects
- C Programming Wikibook
- Introduction to 'fun' C
- Learning C with GDB
- POSIX Threads Programming tutorial (有点过时,但大部分仍然有效且有用)
- The GNU C Programming Tutorial (在线PDF)
- Templating in C
Intermediate¶
- 8 gdb tricks you should know
- 10 C99 tricks
- Diving into concurrency: trying out mutexes and atomics
- Introduction to OpenMP (视频)
- OpenMP tutorial (针对 OpenMP3 标准)
- memcpy vs memmove
- MPI tutorial
- Some unknown features or tricks in C language
- The lost art of C structure packing
- What a C programmer should know about memory
- What every C programmer should know about undefined behaviour
Advanced¶
- Advanced metaprogramming in C
- Quick tutorial on implementing and debugging malloc, free, calloc, and realloc
- Bit twiddling hacks
- I do not know C
- Implementing smart pointers for the C programming language
- Inline functions in C
- Metaprogramming custom control structures in C
- Some dark corners of C
- Writing efficient C and C code optimization
- What every programmer should know about memory
Self-study courses¶
Physical¶
Reference¶
- C: A Reference Manual 5E - C99 的完整参考书.
- C Pocket Reference - C99 简明参考书.
- The C Programming Language 2E - 关于 C 语言的原著,由其作者编写.
Beginner¶
- C Primer Plus 6E - 完整的 C11 编程教程.
- C Programming: A Modern Approach - 学习 C 基础知识的优秀书籍.
- Head First C - 学习 C 的“Head-first”风格书籍.
Intermediate¶
- 21st Century C - 非常好的第二本 C 编程书籍.
- Understanding and Using C Pointers - 关于 C 中指针的深入资源.
- ZeroMQ - 将 ZeroMQ 与 C 结合使用的书籍.
Advanced¶
- Expert C Programming: Deep C Secrets - 有趣、深入和有趣地了解 C 的内部结构.
Macros¶
- P99 - 用于实现高级功能的宏套件,例如默认函数参数、范围绑定资源等(需要 C99)
Q Public License
Memory Allocators¶
各种系统和平台的内存分配器的实现.
- jemalloc - 强调避免碎片和可扩展并发支持的通用 malloc(3) 实现,常用于生产系统.
FreeBSD
- dlmalloc - Doug Lea 的 malloc(3) 实现,可用于学术和研究目的.
Public Domain
- Hoard - 适用于 Linux、Windows、Mac 和 Solaris 的快速、可扩展且内存高效的 Malloc.
GNU GPL2
- nedmalloc - 用 C 编写的极其快速的可移植线程缓存 malloc(3) 实现.
GNU GPL2
- rpmalloc - 跨平台,无锁内存分配器.
Public Domain
Multimedia¶
- FFMPEG - 完整的跨平台解决方案,用于录制、转换和流式传输音频和视频.
GNU LGPL2.1 或者 later
或者GNU GPL2.1 或者 later (some parts)
- GStreamer - 音频和视频媒体框架.
GNU LGPL2.1
- lodepng - 简单的 PNG 图像解码器和编码器,不需要其他依赖项.
3-clause BSD
- libsoup - GNOME HTTP 客户端/服务器库. 使用 GObject.
GNU LGPL2.1
- libmpv - 音乐播放库. 使用
./waf configure --disable-cplayer --enable-libmpv-shared
进行编译,使其没有音乐播放器.GNU GPL2.1 or later
- libsoundio - 用于跨平台、实时音频输入和输出的库. 有一系列的后端.
Expat
Networking and Internet¶
- asnlc - 将 ASN.1 规范编译成 C 源代码.
FreeBSD
- czmq - ZeroMQ 的高级绑定.
MPL2.0
- GNU adns - 高级、易于使用、支持异步的 DNS 客户端库和实用程序.
GNU GPL3 or later
- GNU SASL - 简单认证和安全层的实现以及一些常见的 SASL 机制.
GNU GPL3 or later
- GnuTLS - 安全通信库,实现 SSL、TLS 和 DTLS.
GNU LGPL2.1 or later
- gumbo-parser - C99 中的 HTML5 解析库.
Apache 2.0
- http-parser - HTTP 请求/响应解析器.
Expat
- ldns - 简化 DNS 编程的库.
3-clause BSD
- libcurl - 客户端 URL 传输库,支持多种格式.
curl license
- LibEtPan - 为 IMAP、SMTP、POP 和 NNTP 提供高效网络的邮件库.
3-clause BSD
- libev - 另一个事件循环.
FreeBSD
- libuv - 跨平台异步 I/O.
Expat
- libevent - 网络服务器的事件循环替换.
3-clause BSD
- libgss - 通用安全服务.
GNU GPL3 or later
- libhttpd - 用于向应用程序或嵌入式设备添加基本 Web 服务器功能的库.
GNU GPL2
- libidn - Stringprep、Punycode 和 IDNA 规范的实施.
GNU GPL3 or later
- libmicrohttpd - 小型 C 库,可以轻松地将 HTTP 服务器作为另一个应用程序的一部分运行.
GNU LGPL2.1 or later
- libsagui - Sagui 是一个跨平台的 C 库,有助于开发 Web 服务器或框架.
GNU LGPL3
- libvldmail - 您友好的电子邮件地址验证库.
WTFPLv2
- lwan - 实验性、可扩展、高性能的 HTTP 服务器.
GNU GPL2.1
- mongoose - 用于 C 语言的嵌入式 Web 服务器.
GNU GPL2.1
- nanomsg - ZeroMQ 的基于 C 的实现.
Expat
- OpenSSL - SSL 和 TLS 协议的实施,还包括一个加密库.
Dual Licensed under the OpenSSL License and the SSLeay License
- oSip - C 中的 SIP 实现,无需额外的依赖项.
GNU LGPLv2.1 or later
- pig - Linux 数据包制作工具.
GPL2
- s2n - TLS/SSL 协议的 C99 实现,旨在简单、快速且将安全性作为优先事项.
Apache 2.0
- socket99 - BSD 套接字 API 的 C99 包装器.
ISC
- Tox - Communication platform, designed to be a Skype-killer.
GNU GPL3
- twitc - 用于与 Twitter OAuth API 交互的迷你 C 库.
Expat
- librg - 用于构建简单而优雅的跨平台 mmo 客户端-服务器解决方案的库.
Apache 2.0
Web Frameworks¶
- balde - 基于 GLib 的 C 微框架.
GNU LGPLv2.1
- onion - 用于创建简单 HTTP 服务器和 Web 应用程序的 C 库.
Apache 2.0
- kore - 易于使用、可扩展且安全的 Web 应用程序框架,用于用 C 语言编写 Web API.
- klone - KLone 是一个功能齐全的多平台 Web 应用程序开发框架.
- duda - Duda I/O 是一个事件驱动的高性能 Web 服务框架,用 C 语言编写.
Apache 2.0
Numerical¶
- apophenia - 统计和科学计算库.
GNU GPL2.1
- ATLAS - 自动调整的线性代数软件.
3-clause BSD
- BLAS - 基本线性代数子程序; 一组提供向量和矩阵运算的例程.
BLAS license
- CDFLIB - 具有评估各种标准概率分布的累积密度函数的例程的库. 也可以在给定其他参数的情况下计算 CDF 的一个参数. (未颁发许可证)
- cmathl - 具有多种数学函数和 CMake 构建支持的纯 C 数学库. 寻求接近 C89/C90 的可移植性.
MIT
- Cuba - 多维数值积分库.
GNU LGPLv3
- FFTW - 西方最快的傅里叶变换; 高度优化的快速傅里叶变换例程.
GNU GPL2.1 or later
- FLINT - 数论快速库; 一个支持数字、多项式、幂级数和矩阵等算术的库.
GNU GPL2.1 or later
- GLPK - GNU 线性规划工具包; 为解决大规模线性规划、混合整数规划和其他相关问题而设计的软件包.
GNU GPL3 or later
- GMP - GNU 多重精度算术库; 一个用于任意精度算术的库.
GNU GPL2.1
和GNU LGPLv3
- GNU MPC - 复数算术库.
GNU LGPL3 or later
- GNU MPFR - 任意精度浮点运算库.
GNU LGPL3 或者 later
或者GNU LGPL2.1 或者 later (until version 2.4.x)
- GNU MPRIA - 用于多精度有理区间运算的便携式数学库.
GNU GPL3 or later
- GSL - GNU 科学图书馆; 一个复杂的数值库.
GNU GPL3
- igraph - 用于创建和操作大型图形的库.
GNU GPL2
- KISS FFT - 非常简单的快速傅立叶变换库.
3-clause BSD
- LAPACKE - C interface to LAPACK.
3-clause BSD
- PARI/GP - 数论计算机代数系统; 包括 C 的编译器.
GNU GPL2.1 or later
- PETSc - 一套数据结构和例程,用于由偏微分方程建模的科学应用程序的可扩展并行解决方案.
FreeBSD
- PROB - 处理各种离散和连续概率密度函数的库.
GNU LGPL3
- Yeppp! - 速度非常快,SIMD 优化的数学库.
3-clause BSD
Parallel Programming¶
- cchan - 用于线程间通信的通道构造的小型库.
Public Domain
- ck - 并发原语、安全内存回收机制和非阻塞数据结构.
FreeBSD
- mill - C 中的 Go 风格并发.
X11
- libdill - C 中的结构化并发.
X11
- MPICH - MPI 的另一个实现.
MPICH licence
- OpenMP - 一组 C 编译指示,旨在实现代码的轻松并行化.
3-clause BSD
- OpenMPI - 消息传递接口实现.
3-clause BSD
- pth - 用于多线程执行的基于优先级的非抢占式调度的便携式实现.
GNU GPL3 or later
- pthreads - POSIX 线程库.
- SLEPc - 用于在并行计算机上解决大型、稀疏特征值问题的软件库.
GNU LGPL3
- TinyCThread - C11 线程 API 的可移植、小型实现.
zlib
Parsers¶
- hammer - 二进制格式的解析器组合器.
GNU GPL2.1
- iniparser -
.ini
文件的解析器.Expat
- libconfini - 另一个 INI 解析器.
GNU GPL3 or later
- libYAML - YAML 1.1 解析器和发射器.
Expat
- mpc - 解析器组合器库.
FreeBSD
- libucl - 通用配置库解析器.
FreeBSD
Regex¶
> “有些人在遇到问题时会想‘我知道,我会使用正则表达式’.现在他们有两个问题.” - 杰米扎温斯基.
- PCRE - 与 Perl 5 相同的正则表达式的实现.
3-clause BSD
- regexp4 - 使用自己的语法简单而完整地实现正则表达式.
GNU GPL3 or later
- SLRE - 超轻正则表达式库; Perl 正则表达式语法子集的一个非常小的实现.
GNU GPL2.1
- sregex - 非回溯基于 NFA/DFA 的 Perl 兼容正则表达式引擎库.
3-clause BSD
- TRE - 符合 POSIX 标准、功能齐全的正则表达式库.
FreeBSD
Serialization¶
- binn - 二进制序列化格式意味着紧凑、快速和易于使用.
Apache 2.0
- c-capnproto - Cap'n Proto 序列化协议的实施.
Expat
- cmp - 实施 MessagePack 序列化协议.
Expat
- libavro - Avro 数据序列化系统的 C 实现.
Apache 2.0
- mpack - 的另一个实现 MessagePack 序列化协议.
Expat
- netstring-c - 网络字符串编码器和解码器.
Public Domain
- protobuf-c - 在 C 中实现 Google Protocol Buffer.
FreeBSD
- xdr - 外部数据表示; 数据序列化的标准.
Source Code Collections¶
这包含小源代码的集合. 如果您想要大而集成的东西,请查看框架部分.
- CCAN - 以 Perl 的 CPAN 为模型,这是一大堆 C 代码的集合. 完整列表是 here.
- clib - C 的包管理器.带有 bunch of libraries of its own.
Expat
- gnulib - 通用 GNU 代码的集合.
- libdjb - 做各种事情的图书馆集合.
(Apparently) Public Domain
Standard Libraries¶
这包含标准 C 库.
- Bionic - 谷歌的 C 标准库,为 Android 开发.
3-clause BSD
- dietlibc - 为尽可能小的二进制文件设计的 C 标准库.
GNU GPL2.1
- glibc - GNU C 库; C 标准库的实现.
GNU LGPL2.1
- musl - 标准 C 库,兼容 POSIX 2008 和 C11. 专为静态链接而设计.
Expat
String Manipulation¶
- bstrlib - 更好的字符串库.
3-clause BSD
和GNU GPL2.1
- ICU - Unicode 的国际组件; 支持 Unicode 的库.
ICU license
- libunistring - 用于在 C 中操作 Unicode 字符串的库.
GNU LGPL3
- libgiconv - 文本转换库.
GNU LGPL2.1 (library)
或者GNU GPL3 (*iconv* program)
- SDS - 简单的动态字符串; 一个以更简单的方式处理 C 字符串的库,但它与普通的 C 字符串函数兼容. 可通过 clib.
FreeBSD
- shoco - 小文本字符串的压缩器.
Expat
- smaz - 高效的字符串压缩库.
3-clause BSD
- utf8.h - 单头 utf8 字符串函数.
Unlicense
- utf8proc - 用于处理 UTF-8 Unicode 数据的小型、干净的库.
License
Testing¶
- CHEAT - 非常简单的单元测试框架.
FreeBSD
- Check - C 的单元测试框架.
GNU LGPL2.1
- CMock - C 的模拟/存根生成器.
Expat
- cmocka - 支持模拟对象的单元测试框架.
Apache 2.0
- Criterion - KISS,非侵入式 C 测试框架.
Expat
- CUnit - C 的另一个单元测试框架.
GNU LGPL2.0
- Cutest - 带有内存泄漏检测的单元测试库(Linux、freeBSD 和 Windows).
GPL2
- minunit - C 的最小单元测试框架.
Expat
- Unity - C 的简单单元测试框架.
Expat
Text Editor Extensions¶
虽然几乎任何体面的程序员的文本编辑器都支持 C,但有一些扩展使其更令人愉快. 这是按编辑器分类的.
Atom¶
Emacs¶
- CEDET - Emacs开发环境工具合集; 旨在为 Emacs 提供类似 IDE 的功能. 内置.
GNU GPL3 or later
- Flycheck - 现代语法检查. 对于 C,它可以使用 GCC 或 Clang 作为后端.
GNU GPL3 or later
- Yasnippet - 模板系统,带有通用代码片段的 C 模板.
GNU GPL3 or later
Vim¶
- Syntastic - 语法检查和 linting.
Do What The Fuck You Want To license
- YouCompleteMe - Vim 的代码完成引擎.
GNU GPL3
Tools¶
这是一个有用的程序列表,可帮助您编写和调试 C 代码,它们不是编辑器、库或编译器.
- Artistic Style - 支持 C 的快速小型自动源代码格式化程序.
GNU LGPL3
- address-sanitizer - 快速内存错误检测器.
Apache 2.0
- biicode - C 的现代依赖管理器.
Expat
- c - 在命令行上一次性编译和执行 C“脚本”. 也有 shebang 支持.
Expat
- c99sh - 使用 hash-bang 运行 C 文件.
FreeBSD
- CBMC - C 有界模型检查器; 用于验证数组边界、指针安全和用户指定断言的工具.
Original BSD
- cdecl - 将 C 声明翻译成英文的在线服务,反之亦然.
Public Domain
- cinclude2dot - 图包括使用 Graphviz 的 C 项目中的依赖项.
Any GNU GPL version (due to underspecification in the file)
- Complexity - 用于测量 C 源代码复杂性的工具.
GNU GPL3 or later
- CScout - 用于 C 程序集合的源代码分析器和重构浏览器.
GNU GPL3
- DDD - 一系列命令行调试器的图形前端.
GNU GPL3 or later
- GDB - GNU 项目调试器; C的调试器.
GNU GPL3 or later
- Glade - 支持快速开发 GTK+ GUI 的 RAD 工具.
GNU GPL2.1
- GMSL - GNU Make 标准库; GNU Make 附加功能的集合.
3-clause BSD
- GNU Global - 与 C 一起使用的源代码标记工具.
GNU GPL3
- gprof - 性能分析工具. GNU binutils 的一部分.
GNU GPL3 or later
- Highlight - 将源代码转换为带漂亮突出显示的格式化文本.
GNU GPL3
- include-what-you-use - 帮助找到不必要的夹杂物并提出修复它们的建议. 基于 LLVM/Clang(并且只适用于它).
NCSA
- indent - 自动格式化 C 源代码以使其更易于阅读. 还可以从一种源样式转换为另一种样式.
GNU GPLv3 or later
- rr - 记录非确定性执行以允许确定性调试的调试器.
FreeBSD
- tup - 非常快速、基于文件的跨平台构建系统.
GNU GPL2.1
- unifdef - Removes #ifdef 和 #if directives with their delimited text without touching any other part of the file.
3-clause BSD
和FreeBSD
- Valgrind - 一系列动态分析工具,包括泄漏检查器.
GNU GPL2.1
Utilities¶
这是一个“包罗万象”的类别,适用于任何不适合其他地方的东西.
- ApeTagLibs - 用于处理 APEv2 标签的 C 库.
Expat
- bfd - 用于操作二进制目标文件的库. GNU binutils 的一部分.
GNU GPL3 or later
- cf4ocl - OpenCL 的 C 框架; 用于开发和基准测试的跨平台面向对象框架 OpenCL 项目.
GNU LGPL3 (library)
或者GNU GPL3 (project code)
- CommonMark - CommonMark 规范的 C 实现.
Various Licenses
- CException - C 异常的实现.
Expat
- docopt.c - 命令行选项解析器的 C 实现.
Expat
- dyncall - 另一个外部函数接口库.
Expat
- FANN - 快速人工神经网络库; 神经网络的实现.
GNU GPL2.1
- Firm - C 库,提供适合在编译器中使用的基于图形的中间表示、优化和汇编代码生成. 在相同的许可证下附带一个示例 C 前端.
GNU LGPLv2.1
- Genann - C 中的简单神经网络库.
Zlib
- gjrand - 随机数生成程序库.
GNU GPL2.1
或者GNU GPLv3
- GNU FreeIPMI - 带内和带外 IPMI 实施.
GNU GPL3
- GNU gperf - 完美的哈希函数生成器,给定一个字符串列表. 输出 C 代码.
GNU GPL3 or later
- GNU Libffcall - 用于构建外部函数接口的库集合.
GNU GPL3 or later
- gperftools - 用于测量和改进性能的实用程序集合.
3-clause BSD
- huffandpuff - 最小霍夫曼编码器和解码器.
Public Domain
- kdtree - 用于处理 KD 树的简单库.
3-clause BSD
- Kitsune - 用于动态软件更新的高效通用框架.
GNU LGPL3 or later
- libavl - 包含一系列自平衡二叉树的库.
GNU GPL3 or later
- libbson - BSON 实用程序库.
Apache 2.0
- libCello - 将高级编程引入 C 的库.
3-clause BSD
- libffi - 便携式外部函数接口库.
Expat
- libgit2 - Git 的纯 C 实现.
GNU GPL2 only, with a linking exception
- libimobiledevice - 与 iThings 通信的跨平台协议库.
GNU LGPLv2.1 或者 later (library)
或者GNU GPL2.1 或者 later (tools)
- libnfc - 独立于平台的近场通信库.
GNU LGPL3
- libPhenom - 已弃用,此处用于存档目的. 用于构建高可扩展性和高性能系统的事件框架.
Apache 2.0
- ncurses - 彩色终端 UI 库.
GNU GPL3 or later
- nope.c - 基于 C 语言的超轻型软件平台,用于可扩展的服务器端和网络应用程序(想想 C 程序员的 node.js).
GNU GPL2.1
- pbc - 协议缓冲区库.
Expat
- rabbitmq-c - 客户端库 RabbitMQ.
Expat
- Ragel - 用于编译为 C 的状态机的 DSL.
GNU GPL2.1
- Tinyexpr - 用于简单数学表达式的小型递归下降解析器、编译器和评估引擎.
zlib
- uthash - 哈希表实现,允许将现有结构轻松存储在哈希表中.
1-clause BSD
- cpu_features - 一个跨平台的 C99 库,用于在运行时获取 cpu 功能.
Apache 2.0
- pblog - 用于记录 formware 事件的小型、低开销、结构化的日志记录库.
Apache 2.0
- libelf - C 中的 ELF 目标文件访问库.
GNU GPL2.1
- mcpp - 便携式 C 预处理器.
2-clause BSD
- libusb - 通用访问 USB 设备.
LGPL2.1
- alsa-lib - 与 ALSA 交互的用户空间库.
LGPL2.1
- Capstone - 反汇编/反汇编框架.
BSD 3-clause
XML¶
> “XML 是废话.真的.没有任何借口.XML 对人类来说很难解析,即使对计算机来说解析也是一场灾难.没有理由存在这种可怕的废话.” - 莱纳斯·托沃兹