开源 C 库列表
来自cppreference.com
此页面的目的是构建开源 C++ 库的比较列表,使得人们在需要特定功能的实现时,不必浪费时间在网上(DuckDuckGo、谷歌、必应等)搜索。
若你知道可能对其他人有用的库,请在此添加到它的链接。能包含进来的库没有限制,但是必须能便捷地下载库的源码。
以“原态”提供此页面——希望这有用,但不提供任何担保。过时、误导或错误的链接可能出现于此。若你注意到这些错误,则改正它会很有意义。
包管理器
包管理器 | 简述 |
---|---|
build2 | 一个开源的 (MIT)、跨平台的构建工具链,旨在为开发和打包 C/C++ 项目时提供如 Rust Cargo 一样的便利性,同时提供构建系统中的深度定制和灵活性。 |
cget | CMake 包检索工具,可用于下载并安装 CMake 包。 |
cmodule | 非侵入式 CMake 依赖管理。 |
conan | 去中心化、开源 (MIT) 的 C/C++ 包管理器。 |
CPM.cmake | 一段可以为 CMake 加入依赖管理功能的 CMake 脚本。它是作为 CMake 的 FetchContent 模块的一个简单包装构建的。该模块加入了版本控制、缓存、简单 API 等功能。 |
hunter | 一个 CMake 驱动的跨平台包管理器,服务于 C/C++ 项目。 |
spack | 一个超级计算机、Linux、macOS 平台的包管理器。它使得安装科学软件变得简单。非绑定于某一特定语言。 |
teaport | 一个受 cocoapods 启发的依赖管理器。 |
vcpkg | 一个 Windows、Linux、macOS 平台的 C++ 包管理器。 |
xmake | 跨平台的基于 Lua 的 C/C++ 构建工具和包管理器。 |
库
操作系统
- 访问控制
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
acl | |||
apparmor |
- 扩展属性
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
attr |
图形用户界面
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
IUP | |||
Nuklear | 单头文件 ANSI C 立即模式的跨平台 GUI 库。(文档) | ||
lvgl | 强力且易用的嵌入式 GUI 库,提供大量部件,高级视觉效果(透明度、抗锯齿、动画)和低内存要求 (16K RAM, 64K Flash)。(文档) | ||
tiny file dialogs | 单个跨平台 C 文件(无初始化,无主循环,6 个模态函数调用) |
Gtk+ 部件
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
appmenu-gtk | |||
ghex | |||
goocanvas | |||
gtkhotkey | |||
gtk+ | |||
gtksourceview | |||
gtkspell | |||
gucharmap | |||
webkitgtk |
Microsoft Excel
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
libxlsxwriter | |||
xlsx_drone |
音频
- CD
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
cdparanoia |
- 编解码器
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
aften | |||
faad2 | |||
wavpack |
- 基础结构
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
alsa-lib | |||
portaudio |
- 语音合成
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
espeak | |||
flite |
视频
- 编解码器
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
schroedinger | |||
video4linux |
文件
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
gmime |
数学
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
gsl | GNU 科学运算库 (GSL) 是一个 C/C++ 数值库 (源码) | GPL | make |
- 整数多维插值
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
argyll |
- 线性代数
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
atlas | |||
blas | |||
eigen |
- 金融
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
ta-lib |
- 快速傅里叶变换(FFT)
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
fftw3 |
- 多精度
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
gmp |
- 信号处理
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
liquid-dsp | |||
vsipl | |||
vsipl++ |
图形
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
allegro | Allegro-5 是一个主要针对视频游戏与多媒体编程的跨平台库。 | ||
babl | |||
Bgfx | 跨平台,图形 API 无关的,"请自备引擎/框架" 风格的渲染库。 | BSD 2 | |
cairo | |||
raylib | 跨平台的 C99 游戏开发库,提供 OpenGL 硬件加速,完整 3D 支持,骨骼动画,着色器,字体,音频,数学,GUI,等等。 (源码) (文档) | Zlib | cmake, make, vcpkg, zig |
SAIL | 松鼠抽象图像库 (Squirrel Abstract Image Library),是一个小型,快速且跨平台的图像解码库。 | ||
SDL | 简单直接媒体层 (Simple DirectMedia Layer),是提供输入、音频、绘图等更多功能的跨平台库。 | ||
SIGIL | |||
Simple2d | 小型、简单、跨平台的 SDL2/OpenGL 包装,提供绘制、媒体、窗口管理和输入等能力。 | MIT |
通用
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
libmixf |
进程间
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
dbus | |||
dee | |||
gdbus |
数据库
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
berkeley_db | |||
libfmrt | |||
libmongoc | MongoDB 的官方 C 驱动库(文档)。它提供了优化的 API,支持 CRUD 操作、易理解功能支持(包括 BSON),还支持各种身份认证机制,以便于将 MongoDB 功能集成到基于 C 的应用中。 | Apache 2.0 | CMake |
lmdb | |||
SQLite | C 库,实现一个小巧、快速、自包含、高可靠、全功能的 SQL 数据库引擎。SQLite 是世上最常用的数据库引擎。(源码) (文档) | 公共领域 |
配置
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
libconfig | |||
libconfini |
环境
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
libXDGdirs |
通信
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
gsoap | |||
KCP | 快速可靠的 ARQ 协议,帮助应用减少网络延迟。 | MIT | |
libcurl | |||
libmicrohttpd | |||
libsagui | |||
MQTT-C | Github URL | MIT | |
nanomsg | 套接字库,提供常用通信模式;无依赖;跨平台。由 nng取代。 | MIT/X11 | |
UCX | 统一通信框架 (UCX) 为消息传递 (MPI),共享内存 (PGAS) 和 RPC/以数据为中心的应用程序提供了一个优化的通信层。 | BSD3 | |
zeromq | |||
libusb | 可移植的 C 库,提供通用的 USB 设备访问。 |
压缩
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
bzip2 | |||
lz4 | |||
zlib |
并发
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
ck | |||
MutexGear | 仅用互斥体实现的同步(滚轮,读写锁,工作队列)。 | MutexGear 库许可 |
数据类型
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
bstrlib | |||
datastd | |||
str | 又一个 C 语言的字符串库。 |
XML
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
expat | |||
gsoap |
测量
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
edlib |
面向对象编程
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Cello | |||
GObject |
网络库
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
libpcap(*nix) | |||
npcap(win7~10+) |
Web 前端
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
cgit |
调试
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
dbg-macro | 一组用于打印并返回表达式的值的宏,对于快速调试来说非常方便。受 Rust 的 dbg!(...) 宏和它的 C++ 变体启发。 | MIT |
参阅
外部链接
1. | C 单元测试框架列表 — Wikipedia |
2. | A curated list of (awesome) C and C++ libraries — GitHub |
3. | C 开源游戏和框架的列表 — GitHub.io |