awesome-c
by oz123
A curated list of awesome C frameworks, libraries, resources and other shiny things. Inspired by all the other awesome-... projects out there.
AI summary
C dev toolkit
A curated collection of C libraries and tools for various aspects of software development
- stars
- 9.5K
- forks
- 837
- watching
- 285
- awesome lists
- 5
- entries
- 559
What's in the list
559 links in 52 sections, with live GitHub stats.activeno commit in 2y
AI
- ccv
C-based/Cached/Core Computer Vision library; modern computer vision
- Cranium
Portable, header-only ANN library in C99
FANN
Fast Artifical Neural Network library; an implementation of neural networks
- Genann
Simple ANN in C89, without additional dependencies
KANN
Two-file ANN library
LibDEEP
Deep learning library
m2cgen
A CLI tool to transpile trained classic ML models into a native C code with zero dependencies
- sod
An Embedded Computer Vision & Machine Learning Library
Benchmarking
b63
Light-weight micro-benchmarking tool for C
Build Systems
- Autotools
Also known as the GNU build system (automake, autoconf, libtool...) is one of the most widely used build systems (configure && make)
Autotools project skeleton
A simple autotools skeleton (template) to quickly bootstrap new projects
- CMake
Cross-platform family of tools designed to build, package and test software
- GNU Make
Tool which controls the generation of executables and other non-source files of a program
- Meson
Extremely fast, user-friendly build system. Based on Ninja
- Premake
Command-line utility which reads a scripted definition of a software project and uses it to generate project files for Visual Studio and GNU Make. Other targets are also being worked on
- SCons
Software construction tool using Python
- xmake
Cross-platform build utility
zproject
Project generator and build system support tool
Compilers
- ccache
Compiler cache designed to speed up recompilation
- Clang
Compiler for LLVM. Supports C11
- cproc
A C11 compiler using QBE as a backend
distcc
Program that allows builds to be distributed among several machines
- Firm
Library that provides a graph-based intermediate representation, optimizations and assembly code generation suitable for use in compilers. Comes with an example C front-end under the same license
- GCC
Provides a C compiler as part of its compiler set. Supports C11
- PCC
Venerable compiler. Supports C99. , all open source
Compression
- blosc
Extremely fast, multi-threaded, meta-compressor library. Various licenses, all open source
Brotli
General-purpose lossless compression algorithm library. Has speeds comparable to DEFLATE, but much higher compression ratios.
- clzip
C version of the high-quality data compressor (LZMA implementation)
CRoaring
C implementation of
FiniteStateEntropy
Two highly efficient compression codecs optimized for modern CPUs
DENSITY
Super-fast compression library
heatshrink
Data compression/decompression library for embedded and real-time systems
fast_zlib
Improved zlib, which runs 2 to 10 times faster
fastLZ
Lightning-fast lossless compression library (LZ77 type). Embbedable on small target like ARM Cortex-M families. Source code directly embbedable on your project ( a pair of h/c files), no dynamic memory allocation
huffandpuff
Minimal Huffman encoder and decoder. Public domain
libzip
C library for reading, creating and modifying zip archives
- libbzip2
Patent-free, high-quality data compression library
Lizard
Formerly LZ5; an efficient compressor with fast decompression. Achieves compression ratios comparable with zip and zlib at decompression speeds of 1000MB/s and faster
- lz4
Library for an extremely fast compression algorithm
- lzo
Fast data compression library
pixz
Parallel, indexed xz compressor
- shoco
Compressor for small text strings
SIMDComp
Simple library for compressing lists of integers using binary packing. Makes use of SIMD instructions on x86
smaz
Efficient string compression library
squash
Compression abstraction library, complete with some utilities
TurboPFor
Fastest integer compression
TurboRLE
Most efficient run-length encoding
zip
Really really small zip archive processing library
- Zlib
Massively spiffy yet delicately unobtrusive compression library
libarchive
libarchive is a portable, efficient C library that can read and write streaming archives in a variety of formats
zlib-ng
Zlib replacement with optimizations for 'next-generation' systems
- Zstandard
Fast, lossless compression algorithm, targeting real-time compression scenarios at zlib-level or better compression ratios
Concurrency and Parallelism
- cchan
Small library for channel constructs for inter-thread communication. Public domain
checkedthreads
A simple library for parallelism, with built-in checking for race conditions
- ck
Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures
- FCFS RWLock
First-come first-served Readers/Writers lock for POSIX threads
Libaco
A blazing fast and lightweight C asymmetric coroutine library
libcsp
High performance concurrency C library influenced by the CSP model
- libdill
Library which makes structured concurrent programming easy
libhl
Library implementing a thread-safe API to manage a range of data structures. Also provides some supporting functions and structures for concurrent and lockfree programming
- liburcu
Data synchronization library, which scales linearly with the number of cores
- mill
Go-style concurrency
oclkit
Two-file OpenCL wrapper
- OCL-MLA
OpenCL Mid-Level Abstractions
- OpenMP
Set of pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable)
Open MPI
Message passing interface implementation
pal
Optimized library for maths, parallel processing and data movement
- pth
Portable implementation for non-preemptive priority-based scheduling for multiple threads of execution
- pthreads
POSIX thread library. Standard (no license applicable)
- TinyCThread
Portable, small implementation of the C11 threads API
Crypto
- GNU SASL
Implementation of the Simple Authentication and Security Layer and a few common SASL mechanism
- GnuTLS
Secure communication library, implementing SSL, TLS and DTLS
- libgcrypt
General-purpose cryptography library, with a range of available ciphers
- OpenSSL
Implementation of the SSL and TLS protocols. Also includes a cryptography library.
- liboqs
Library for quantum-resistant cryptographicl algorithms
- libsodium
Modern and easy-to-use crypto library
- libtomcrypt
Fairly comprehensive, modular and portable cryptographic toolkit. Public domain
- mbed TLS
Another crypto implementation
MIRACL
Multiprecision Integer and Rational Arithmetic Cryptographic Library; an SDK for elliptic curve cryptography
- retter
Collection of hash functions, ciphers, tools, libraries and materials related to cryptography and security. Public domain
s2n
C99 implementation of the TLS/SSL protocols, designed to be simple, fast and with security as a priority
- sphlib
Set of implementations of various hash functions, including several cryptographic ones
trezor-crypto
Heavily optimized crypto algorithms for embedded devices
bfish
A single include ANSI-C Blowfish ECB crypto library. Public domain
Database
- BerkeleyDB
Library for a high-performance embedded database for key-value data
- DuckDB
Fast in-process analytical database, with C API
- EJDB2
Embeddable JSON Database engine
Groonga
Columnar store with full-text search
Hiredis
Minimalistic client library for Redis
- libmongoc
High-performance client library for
- LMDB
Ultra-fast, ultra-compact key-value embedded data store
MySQL
The world's most popular open source database
- PostgreSQL
Powerful object-relational database system
- Redis
Advanced key-value store
- sophia
Modern, embeddable key-value database
sparkey
Simple constant key/value storage library. Designed for read-heavy loads with infrequent, large bulk inserts
- SQLite
Self-contained, serverless, zero-configuration, transactional SQL database engine. Public domain
- UnQLite
Self-contained, serverless, zero-configuration, transactional NoSQL engine
WhiteDB
Lightweight database library, operating entirely in main memory
FlashDB
An ultra-lightweight database that supports key-value and time series data
TDengine
High-performance, cloud native time-series database
Data Structures
C-Macro-Collections
Generate simple and generic data structures using macros
CLIST
Simple and lightweight implementation
Collections-C
Library of generic data structures
ds
Common Data Structures and Algorithms
- igraph
A graph processing library
kdtree
Simple library for working with KD-trees
- libavl
Library containing a range of self-balancing binary trees
- libcdada
A small, portable, MACRO-less library for basic data structures (list, set, map, queue...) in C (C++ backend)
- liblfds
Portable lock-free data structure library. Public domain (more exactly, whatever license you want)
- libsrt
Soft and hard real-time data structures.
list.h
Implementations for singly linked and doubly linked list functions
M*LIB
Library for generic, but typesafe C containers. Implemented as header-only
offbrand
Collection of generic, reference-counted data structures
PackedArray
Random-access array of tightly packed unsigned integers of any desired width. Has a SIMD-optimized implementation
- rb3ptr
Red-Black tree. Exposes almost all implementation primitives, so can be used for scenarios like augmentation, multiple compatible ordering functions, and more
- uthash
Single-file hash table implementation
vector.h
Header library for typed lists
Debugging
- C-Reduce
Tool that takes a large C file with a property of interest and automatically produces a much smaller C file that has the same property. Intended to help create minimal bug-demonstrating cases in complex code
- CBMC
C Bounded Model Checker; a tool for verification of array bounds, pointer safety and user-specified assertions
- cflow
Analyzes a collection of source files and prints a graph charting control flow in the program
- Complexity
Tool for measuring the complexity of source code
- CScout
Source code analyzer and refactoring browser for C programs
- DDD
Graphical front-end for a range of command-line debuggers
debug
One-header library for easier 'printf debugging'
- ESBMC
Efficient SMT-based Bounded Model Checker; a tool for verification of single and multithread programs, user assertions, overflow, and pointer/memory safety
- GDB
GNU Project debugger
- lldb
LLVM debugger
- rr
Debugger that records non-deterministic executions to allow for deterministic debugging
- Valgrind
Range of dynamic analysis tools, including a leak checker
Documentation Generation
Editors
- Anjuta DevStudio
GNOME IDE
- Code::Blocks
Extendable, configurable IDE supporting C
- CodeLite
Cross-platform IDE
- Geany
Small and fast IDE
- KDevelop
KDE IDE
- zinjaI
Simple, lightweight and feature-rich IDE
Embeddable Scripting Engines
Frameworks
- APR
Apache Portable Runtime; another library of cross-platform utility functions
- C Algorithms
Collection of common algorithms and data structures
- CPL
The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit
- EFL
Large collection of useful data structures and functions. Various licenses, all open source
- GLib
Library of utility functions and structures, designed to be portable, efficient and powerful
- klib
Small and lightweight implementations of common algorithms and data structures
- libcork
Utility functions and structures, designed for resource-constrained systems. Can be embedded
libnih
Lightweight library of functions and structures
- libU
Small library of basic utilities, including memory allocation, string manipulation and logging
- PBL
Large library of utilities, featuring data structures, among other things
plibsys
Cross-platform system C library. Zero third-party dependencies, uses only native system calls
- qlibc
Simple and powerful library, designed as a replacement for GLib while focusing on being small and light
sc
Common libraries and data structures for C
TBOX
Multi-platform library with a large number of capabilities
pspsdk
An open-source SDK for PSP homebrew development.
Game Programming
- Allegro
Cross-platform, video game development and multimedia library
AssetKit
🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs
astera
C99 Cross Platform 2D Game Library
cglm
📽 Optimized OpenGL/Graphics Math (glm) for C
- Chipmunk2D
Fast and lightweight 2D game physics library
cmt
🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework
Corange
Game engine in pure C
- CSFML
Binding for
- Darkplaces
Modified version of the Quake2 engine
Epoxy
Library for handling OpenGL function pointer management
exengine
3D game engine in C99 with a starting template
Flecs
A Multithreaded Entity Component System written for C89 & C99
Freecell Solver
Set of libraries and command-line programs for automatically solving FreeCell and some similar variants of card Solitaire
- FreeGLUT
Alternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts
- GLFW
Multi-platform library for creating windows with OpenGL contexts
- ioquake3
Quake3 engine, freed at last
kazmath
Maths library for games
- libao
Cross-platform audio library with a wide variety of outputs
librg
Pure C99 game networking library for building simple and elegant cross-platform multiplayer client-server solutions
MATHC
Math library for 2D and 3D programming
- Orx
Portable, lightweight, plugin-based, data-driven, 2D-oriented game engine
Quake
Quake engine
Quake2
Quake2 engine
- raylib
Simple and easy-to-use library to learn video game programming
RetroArch
Reference frontend for
- SDL2
Cross-platform library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL
sdl-gpu
Library for high-performance, modern 2D graphics. Based on SDL
- SIGIL
Sound, Input and Graphics Integration Library; a simple alternative to other libraries for doing all those things. Various licenses, all open source
uastar
Minimal A* implementation
Graphics
AssetKit
🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs
- Cairo
2D graphics library. or
cmt
🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework
- giflib
Library for reading and writing gif images
- graphene
Thin layer of graphical data types
heman
Tiny library of image utilities dealing with height maps, normal maps, distance fields and the like
libcaca
ASCII renderer for terminal-based interfaces
libgd
Library for the dynamic creation of images by programmers
- libimagequant
Small, portable library for high-quality conversion of RGBA images to 8-bit indexed colour images
- libjpeg-turbo
Faster library for reading and writing JPEG files.
- libpng
Official PNG reference library
- libRSVG
Library to render SVG files using Cairo
libsixel
Library implementing the SIXEL protocol, allowing beautiful graphics in your terminal
- libspng
A simpler interface for reading and writing PNG files
- libvips
Image processing library
- libxmi
Function library for rasterizing 2D vector graphics
lightmapper
Single-file library for lightmap baking, using an existing OpenGL renderer. Public domain
- little CMS
A Color Management System. It provides fast transforms between ICC profiles
mozjpeg
Improved JPEG encoder
nanovg
Anti-aliased 2D vector drawing library on top of OpenGL, for UI and visualizations
- OpenGL
Industry standard for high-performance graphics, with a native C binding.
PlutoVG
A standalone 2D vector graphics library in C
SAIL
⛵ The missing small and fast image decoding library for humans (not for machines)
Graphical User Interface
- GTK+
Cross-platform widget toolkit
- IUP
Another cross-platform widget toolkit
microui
Tiny immediate-mode UI library written in portable ANSI C
- nappgui
Professional SDK to build cross-platform desktop applications using C
nuklear
Small, C89, single-header widget toolkit. Public domain
- tinyfiledialogs
Single-file library for simple dialogs. Compatible with many other toolkits and OSes
- Tk
Basic widget toolkit. Part of Tcl/Tk
- XForms Toolkit
Widget toolkit designed for the XWindow system
- LVGL
embedded GUI with easy-to-use graphical elements, beautiful visuals and a low memory footprint
luigi
A barebones single-header GUI library for Win32, X11 and Essence
Hashing
CLHash
Library implementing the ridiculously fast CLHash hashing function. Only works on Intel Haswell or newer
HighwayHash
Fast, strong, SIMD-using hash function. Also contains an implementation of SipHash (although this is slower)
SpookyHash
Extremely fast hash function
t1ha
Fast Positive Hash - a portable, fast hash function
- xxHash
Extremely fast hashing algorithm. Comes in 32 and 64-bit varieties
Learning, Reference and Tutorials / Reference resources online
tinyc.game
Tiny C games you can compile and run RIGHT NOW
Learning, Reference and Tutorials / Beginner resources online
- POSIX Threads Programming tutorial
(a little dated, but most of it is still valid and useful)
- The GNU C Programming Tutorial
(online PDF)
Learning, Reference and Tutorials / Intermediate resources online
- Introduction to OpenMP
(video)
- OpenMP tutorial
(for the OpenMP3 standard)
Learning, Reference and Tutorials / Advanced resources online
Learning, Reference and Tutorials / Reference books
- C: A Reference Manual 5E
Full reference book for C99
- C in a Nutshell 2E
Concise reference book for C11
- C Pocket Reference
Concise reference book for C99
- The C Programming Language 2E
Original book on C, by its creators
Learning, Reference and Tutorials / Beginner books
- C Primer Plus 6E
Complete tutorial on programming in C11
- C Programming: A Modern Approach
Excellent book to learn the basics of C
- Head First C
'Head-first' style book for learning C
Learning, Reference and Tutorials / Intermediate books
- 21st Century C
Good programming book on C
- Understanding and Using C Pointers
In-depth resource on pointers in C
- ZeroMQ
Book for using ZeroMQ with C
Learning, Reference and Tutorials / Advanced books
- Expert C Programming: Deep C Secrets
Interesting, in-depth and entertaining look at the innards of C
- Modern C, Third Edition: Covers the C23 standard
In Modern C, Third Edition you’ll learn to harness C’s full potential using the latest tools and techniques
Lexing and Parsing
flex
Fast lexical analyzer generator
- GNU Bison
General-purpose parser generator that converts an annotated context-free grammar into a range of parsers
hammer
Parser combinators for binary formats
mpc
Parser combinator library
owl
A parser generator for visibly pushdown languages
- re2c
Lexer generator, producing fast lexers, with access to its internals. Public domain
Memory Management
- Boehm GC
Garbage collection for C. Various licenses, all open source
- jemalloc
Malloc implementation that emphasizes avoidance of fragmentation and scalable concurrency support
- Lockless Memory Allocator
Efficient memory allocator
libcsptr
Smart pointers for C
rpmalloc
Thread-caching, fast memory allocator, naturally aligned on 32-byte boundaries. Public domain
- talloc
Hierarchical, reference-counted memory pool system with destructors
- tlsf
Two-Level Segregated Fit allocator; a general-purpose, dynamic memory allocator designed to meet real-time requirements.
Multimedia
aubio
Library for audio and music analysis
- FFMPEG
Complete, cross-platform solution to record, convert and stream audio and video
- GStreamer
Framework for audio and visual media
- libmpv
Music-playing library
- libsndfile
Library for reading and writing sound files. Supports many formats. or
- libsoundio
Library for cross-platform, real-time audio input and output. Has a range of back-ends
- libVLC
Complete multimedia library for audio and video encoding, decoding, playing and streaming
- lodepng
Simple PNG image decoder and encoder, requiring no other dependencies
minimp3
Lightweight MP3 decoder single header library
- Soundpipe
Lightweight music DSP library
Networking and Internet
- asnlc
Compiler of ASN.1 specifications into C source code
CHL
C Hypertext Library - A library for writing web applications in C
- czmq
High-level binding for ZeroMQ
Dyad.c
Lightweight, easy, asynchronous networking library
- GNU adns
Advanced, easy-to-use, asynch-capable DNS client library and utilities
gumbo-parser
HTML5 parsing library in C99
- H20
A new-generation HTTP server
- llhttp
HTTP request/response parser
- ldns
Library to simplify DNS programming
- libcurl
Client-side URL transfer library, supporting a wide range of formats
- LibEtPan
Mail library providing an efficient network for IMAP, SMTP, POP and NNTP
- libev
Yet another event loop
- libevent
Event loop replacement for network servers
- libhttpd
Library to add basic web server capabilities to an application or embedded device
libhv
Cross platform event loop library
- libidn
Implementation of the Stringprep, Punycode and IDNA specifications
- libmicrohttpd
Small library that makes it easy to run an HTTP server as part of another application
- libnl
is a collection of libraries to provie APIs to the Netlink protocol (replacement for ioctl). It's primary use is to communicate with the Linux kernel, to modify networking state (interfaces, routing etc...)
- libonion
HTTP server library, designed to be easy to use
libpcap
API provides to various kernel packet capture mechanism
- libquickmail
Library intended to give developers a way to send email from their applications. Supports multiple To/Cc/Bcc recipients and attachments without size limits
- libsagui
Library for cross-platform HTTP servers
libuhttpd
A very flexible, lightweight and fully asynchronous HTTP server library based on libev and http-parser for Embedded Linux
LibVNCServer
Cross-platform libraries to implement VNC server and/or client functionality
- libwebsock
Easy-to-use and powerful web socket library
libzmq
Core ZeroMQ library, a high-performance asynchronous messaging library, aimed at use in distributed or concurrent applications. C API (backend C++) with static linking exception
- lwan
Experimental, scalable, high-performance HTTP server
- mongoose
Embedded web server
MQTT-C
A portable MQTT C client for embedded systems and PCs alike
nanomsg
C-based implementation of ZeroMQ
- NNG
nanomsg-next-generation - lightweight brokerless messaging
- oSip
SIP implementation without additional dependencies
silgy
Asynchronous HTTP(S) engine for C/C++ projects
socket99
C99 wrapper for the BSD sockets API
twitc
Mini library for interacting with the Twitter OAuth API
- uriparser
Strictly RFC 3986-compliant URI parsing and handling library
- Wslay
WebSocket library. Implements version 13 of the WebSocket protocol, as described in RFC 6455
zyre
Framework for proximity-based peer-to-peer applications
Numerical
- apophenia
Library for statistical and scientific computing
Arb
Library for arbitrary-precision interval arithmetic
- ATLAS
Automatically Tuned Linear Algebra Software
clBLAS
BLAS functions written in OpenCL
- cmathl
Math library with a great variety of mathematical functions with CMake build support. Seeks to be close to C89/C90 compliant for portability
- Cuba
Library for multidimensional numerical integration
fft-c
A high-performance Fourier Transform from netlib's fftpack; wrapped in a user-friendly format
- FFTW
The Fastest Fourier Transform in the West; a highly optimized fast Fourier transform routine
- FLINT
Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others
- GLPK
GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems
- GMP
GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. or
- GNU MPC
Library for complex number arithmetic
- GNU MPFR
Library for arbitrary-precision floating-point arithmetic
- GNU MPRIA
Portable mathematics library for multi-precision rational interval arithmetic
- GSL
The GNU Scientific Library; a sophisticated numerical library.
- KISS FFT
Simple fast Fourier transform library
- LAPACKE
Interface to
- LibTomMath
Portable, number-theoretic, multiple-precision integer library. Supports algebra, digit manipulation, modular reductions, and various number-theoretic routines. Public domain
- LibTomPoly
Polynomial-related maths library. Public domain
- PARI/GP
Computer algebra system for number theory; includes a compiler to C
- PETSc
Suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations
SCS
Splitting Conic Solver; a numerical optimization package for solving large-scale convex cone problems
- SLEPc
Library for the solution of large, sparse eigenvalue problems on parallel computers
- TomsFastMath
Set of optimized maths operations (in assembly), suitable for cryptographic use. Public domain
- Yeppp!
Fast, SIMD-optimized mathematical library
Profiling
gperftools
Collection of utilities for measuring and improving performance
- gprof
Performance analysis tool. Part of GNU binutils
- OProfile
Statistical profiler for Linux. Can profile any code (including the kernel!) with low overhead and without recompilation
- perf
Linux kernel-based profiler with a lot of functionality
pdfio
PDFio is a simple C library for reading and writing PDF files
Regex
Onigmo
Fork of Oniguruma, supporting more advanced regexps
Oniguruma
Regex library supporting a wide range of encodings, and incorporating many security-oriented fixes
- PCRE
Implementation of regexes identical to that of Perl 5
SLRE
Super Light Regular Expression library; a small implementation of a subset of Perl regex syntax
TRE
POSIX-compliant, feature-full regex library
Serialization
binn
Binary serialization format, meant to be compact, fast and easy-to-use
c-capnproto
Implementation of the Cap'n Proto serialization protocol
cmp
Implementation of the serialization protocol
flatcc
compiler and library
- libavro
Implementation of the Avro data serialization system
mpack
Another implementation of the serialization protocol
- OPIC
Object Persistence in C; a revolutionary serialization framework, with matching on-disk and in-memory representations
protobuf-c
Implementation of Google Protocol Buffer
tpl
Small binary serialization library
- xdr
External Data Representation; a standard for data serialization. Standard (no license applicable)
pbtools
Google Protocol Buffers C source code generator
Source Code Collections
- CCAN
Modelled after Perl's CPAN, this is a big collection of code that does stuff. The full list is . Various licenses, all open source
clib
Something of a package manager. Comes with a
- gnulib
Collection of common GNU code. Various licenses, all open source
- libdjb
Collection of libraries doing various things. (Apparently) public domain
mmx
Collection of single-header libraries. Various licenses, all open source
par
Bunch of single-file libraries
Snippets
Useful code snippets and header-only libraries. Public domain
stb
Range of single-file libraries. Public domain
tinyheaders
Collection of header-only libraries, primarily oriented toward game development
zpl
C99 cross-platform header-only library with many goodies. [ , ][BSD-3-Clause, Unlicense]
Standard Libraries
Bionic
Google's standard library, developed for Android
cloudlibc
Standard library based on the concept of
- dietlibc
Standard library designed for the smallest possible binaries
- glibc
The GNU C Library; an implementation of the standard library.
- musl
Standard library, compatible with POSIX 2008 and C11. Designed for static linking
- PDCLib
The Public Domain C Library. Implements most of C99 and some of C11
- uClibc-ng
Small C library for developing embedded systems
Standard Libraries / Template libraries
CTL
C CONTAINER TEMPLATE LIBRARY (CTL)
String Manipulation
- bstring
The Better String Library
- ICU
International Components for Unicode; a library for Unicode support
levenstein.c
algorithm implementation.
- libunistring
Library for manipulating Unicode strings
- libgiconv
Text conversion library
librope
UTF-8 rope ('heavy' string) library
SDS
Simple Dynamic Strings; a library for handling strings in a simpler way, but one that is compatible with normal C string functions. Available via
stmr.c
algorithm implementation
str
Yet another string library for C language
StringZilla
Up to 10x faster SIMD and SWAR-accelerated string search, sort, hashes, edit distances, alignments, and generators
utf8.h
Single-header UTF-8 library, designed to mimic C-style string functions. Public domain
utf8proc
Library for processing UTF-8 data
Structured File Processing / CSV
libcsv
Simple, streaming CSV parser
Structured File Processing / JSON
- Jansson
Library for encoding, decoding and manipulating JSON
jfes
JSON For Embedded Systems; simple JSON engine without any dependencies
- jsmn
Minimalistic JSON parser
json
Simple, low-memory-use JSON parser
json-c
Easily work with JSON in C. Comes with a reference-counted object model, and aims for conformance with
json.h
Single-file non-streaming JSON parser
parson
Two-file, C89-compatible JSON parser
WJElement
Advanced JSON manipulation library, with support for JSON Schema. or or
- YAJL
Fast streaming JSON parser library
Structured File Processing / INI
inih
Small and simple INI file parser, good for embedded systems
iniparser
Parser for .ini files
- libconfini
Yet another INI parser
minIni
Small and portable INI parser
Structured File Processing / Others
libbson
BSON utility library
libcbor
: CBOR protocol implementation for C and others
libconfuse
Small configuration file parser library
libelf
Simple library for parsing ELF files
libucl
Universal configuration library parser
libxo
Allows an application to generate plain text, XML, JSON and HTML output using a common set of function calls. The application decides at runtime what output style should be produced
Structured File Processing / XML
Structured File Processing / YAML
- libYAML
YAML 1.1 parser and emitter
Signal Processing
libsigrok
signal analysis software suite that supports various device types (such as logic analyzers, oscilloscopes, multimeters, and more). [ ][GPL]
Testing
CHEAT
Simple unit testing framework
- Check
Unit testing framework
- ciut
A modern minimal hassle unit test framework
clar
Clear and simple unit testing framework
- CMock
Mock/stub generator
- cmocka
Unit testing framework with support for mock objects
- Criterion
KISS, non-intrusive test framework
ctest
Yet another unit testing framework
- CUnit
Another unit testing framework
greatest
Unit testing library in one file, with no memory allocation
minctest
Unit testing microlibrary
- munit
Small unit testing framework
Nala
A test framework for C projects
Rexo
Framework for C89/C++ featuring automatic registration of tests and a polished API
Tau
A Micro Unit testing framework for C/C++ (~1k lines of code). Includes a rich set of assertion macros, supports automatic test registration and can output to multiple formats, like the TAP format or JUnit XML. Supported on Linux, macOS, FreeBSD, and Windows
theft
Property-based testing (similar to )
- Unity
Simple unit testing framework
utest
Single-header unit testing library
Text Editor Extensions
- CCompletion
Notepad++ autocompletion plugin. Works with all identifiers recognized by Ctags. This is a download link
- CEDET
Collection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in
Flycheck
Modern syntax checking for Emacs. For C, it can use either GCC or Clang as a back-end
Neomake
Async :make and linting framework for Neovim/Vim
Syntastic
Syntax checking and linting for Vim
- YASnippet
Emacs code template system, with C templates for common snippets
YouCompleteMe
Code completion engine for Vim
Tools
- Artistic Style
Fast and small automatic source code formatter that supports C
address-sanitizer
Fast memory error detector
- bcc
A byte array generator to import binary files directy from C in the spirit of xxd
c
Compile and execute C "scripts" in one go on the command line. Also has shebang support
c99sh
Run C files using hash-bang
- cdecl
Online service to translate C declarations into English and vice versa. Public domain
- cinclude2dot
Graphs include dependencies in a project using Graphviz. or or
- ClangCheck
Static analysis tool, designed to work with Clang
- conan.io
Something of a package manager for C.
- Cppcheck
Static analysis tool. Despite the name, works well with C
- Glade
RAD tool to enable quick development of GTK+ GUIs
- GMSL
GNU Make Standard Library; a collection of additional functionality for GNU Make
- GNU Global
Source code tagging tool
- GPP
General-purpose preprocessor. More versatile than the C preprocessor, but more flexible than m4
- Highlight
Converts source code to formatted text with nice highlighting
include-what-you-use
Helps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it)
incbin
Include binary files in your C/C++ applications with ease
- indent
Formats C source code automatically to make it easier to read. Also converts from one style of source to another
SMACK
Modular software verification toolchain and a self-contained software verifier. Currently only works with programs compiled using Clang
- unifdef
Removes #ifdef and #if directives with their delimited text without touching any other part of the file. or
Utilities
ApeTagLibs
Library for working with APEv2 tags
argparse
Command-line argument parsing library, inspired by Python's argparse module
- attr
Commands for manipulating filesystem extended attributes
- bfd
Library for manipulating binary object files. Part of GNU binutils
Caffeine
Library for building daemons and services for Linux and FreeBSD systems
- CException
Implementation of exceptions
CommonMark
Implementation of the CommonMark spec
cosmopolitan
fast portable static native textmode containers (build C programs for Linux\Mac\Windows in one go)
cpu_features
Get CPU features at runtime.
- CRIU
Checkpoint/Restore In Userspace; a software tool (with a C API) for 'freezing' a running application to disk, then restoring it. or
- D-Bus
Simple way for applications to talk to one another. or
- Discount
Simple implementation of a Markdown parser
dlx
Implementation of , with example solvers
docopt.c
Implementation of a command-line option parser
- dyncall
Another foreign function interface library
- GNU FreeIPMI
In-band and out-of-band IPMI implementation
- GNU gperf
Perfect hash function generator, given a list of strings. Outputs C code
- GNU Libffcall
Collection of libraries for building foreign function interfaces
Hoedown
Fully standards-compliant, extension-supporting, UTF-8 aware, fast Markdown parser
- Kitsune
Efficient, general-purpose framework for dynamic software updating
- libCello
Library introducing higher-level programming to C
libcmark
Library for parsing the CommonMark dialect of Markdown
libcoap
Implementation of the . or
- libcox
Library which permits cross-platform system calls and standard utilities across different operating systems
libffi
Portable foreign-function interface library
libgeohash
Pure C implementation of the Geohash algorithm
- libgit2
Portable implementation of the Git core methods, provided as a re-entrant linkable library.
- libgss
Generic Security Service
libimobiledevice
Cross-platform protocol library to communicate with iThings
libnfc
Platform-independent Near-Field Communication library
libpostal
Library for parsing and normalization of street addresses around the world. Powered by statistical NLP and open geo data
- libtrading
Implementation of network protocols for communicating with exchanges, dark pools and other trading venues. Supports FIX, FIX/FAST and many proprietary protocols
- libusb
Provides generic access to USB devices
- libuv
Cross-platform asynchronous I/O
libvldmail
Your friendly email validation library. No external dependencies (not even regexps)
linenoise
Small, self-contained alternative to readline and libedit
libXDGdirs
An implementation of XDG Base Directory Specification
- MegaMimes
Library for getting the types of a file
- ncurses
Coloured terminal UI library
netbsd-curses
Simplified and small version of ncurses, with the same interface
nope.c
Ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers)
obj.h
A single-header supports OOP in pure C
parg
A single-file reimplementation of with better defaults
pbc
Protocol buffers library
progressbar
Easy-to-use library for displaying text progress bars
rabbitmq-c
Client library for
- Ragel
DSL for state machines that compiles to C
- rmw
safe-remove utility for the command line that can purge items from your waste directories after x number of days
Rogueutil
Cross-platform library for creating text-based user interfaces (TUI)
sort
Collection of sorting routines, which type-specialize at compile-time with a user-defined type
termbox
Library for writing text-based interfaces
tinyexpr
Tiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions
tm
⏱ Timer and Timeline Utils for C
- Tulip Indicators
Library of functions for technical analysis of financial data
whereami
One-file library for locating the current executable on the file system
- XLSX I/O
Cross-platform library for reading and writing .xlsx files
xlsx_drone
Fast Microsoft Excel's *.xlsx reader
- zlog
Reliable, pure C logging library
zproto
Protocol framework for ZeroMQ
Metalang99
Full-blown preprocessor metaprogramming
Datatype99
Algebraic data types for C99
EasyLogger
An ultra-lightweight, high-performance C/C++ log library
Web Frameworks
Concord
A Discord API wrapper library written in C
- facil.io
Mini-framework for web applications. Includes a fast HTTP and Websocket server, and also supports custom protocols
- kcgi
CGI and FastCGI library for C
- KLone
Fully featured, multi-platform, web application development framework, targeted especially at embedded systems and appliances
- Kore
Easy-to-use web application framework for writing scalable web APIs in C
Windows Environments
- Cygwin
Designed to emulate a POSIX-compatible environment extensively under Windows.
- MinGW-w64
Minimalist environment for C development on Windows with 64 bit support.
- MSYS2
Minimal SYStem 2; aims to provide support for a POSIX environment on Windows, with a package manager based on Arch Linux's pacman. Packages have individual licenses, otherwise, as MinGW and Cygwin
Nothing in this list matches your filter.
Featured in 5 awesome lists
Each link jumps to the spot where the list mentions awesome-c.