awesome-c
by inputsh
Continuing the development of awesome-c list on GitHub
- stars
- 3.5K
- forks
- 358
- watching
- 183
- awesome lists
- 8
- entries
- 388
What's in the list
388 links in 43 sections, with live GitHub stats.activeno commit in 2y
Build Systems
- aimake
Build tool designed to avoid complex configurations
- Autoconf
Extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. Part of the Autotools
- Automake
Tool for automatically generating files compliant with the GNU Coding Standards. Requires the use of Autoconf. Part of the Autotools
- CMake
Tools for cross-platform building, testing, and packaging
- Jam
Build system, designed to be easier than make. Understands C build rules implicitly
- Libtool
Generic library support script. Part of the Autotools
- Meson
Extremely fast, user-friendly build system. Based on Ninja
Premake
Build script generator for toolsets like Visual Studio, Xcode, or GNU Make
- SCons
An easier, more reliable and faster way to build software
Ninja
Small, simple build system with a focus on speed
- Bazel
Build system for various operating systems and targets
- Buck
Build system created and used by Facebook
- Qbs
Modern build tool for software projects
- qmake
Build system included with the Qt Framework
- xmake
Cross-platform build utility based on lua
Compilers
- Clang
C compiler for LLVM. Supports C11
- CompCert
Fully-verified C compiler. Supports almost all of C89
- GCC
Provides a C compiler as part of its compiler set. Supports C11 and OpenMP
- PCC
Venerable C compiler. Supports C99
- TCC
Tiny C Compiler; a small, fast C compiler. Supports C99 (except complex types)
- Intel SPMD
Compiler for a variant of the C language, for single program, multiple data programming
- ccache
Compiler cache designed to speedup recompilation
Compiler libraries
- yasm
Yasm Modular Assembler Project
Compression
- libzip
A C library for reading, creating, and modifying zip archives
- lzo
Very fast data compression library
- zlib
Massively-spiffy yet delicately-unobtrusive compression library
- bzip2
Patent free, high quality data compressor
- lz4
Fast Compression algorithm
snappy
Fast compression library (implementation in C++, native bindings to C)
- zstd
Fast real-time compression algorithm
brotli
Generic lossless compression algorithm based on LZ77, Huffman coding and 2nd order context modelling
- quicklz
Fast compression library
pixz
Pixz (pronounced pixie) is a parallel, indexing version of
Crypto
- GnuTLS
Secure communication library, implementing SSL, TLS and DTLS
- libgcrypt
General-purpose cryptography library, with a range of available ciphers. and
- OpenSSL
Implementation of the SSL and TLS protocols, and also includes a cryptography library
- libsodium
Modern and easy-to-use crypto library
- libtomcrypt
Fairly comprehensive, modular and portable cryptographic toolkit
- mbed TLS
Another crypto implementation for C
- libressl
Modernized fork of OpenSSL
Database
- BerkeleyDB
Library for a high-performance embedded database for key-value data
Hiredis
Minimalistic client library for Redis
LMDB
Ultra-fast, ultra-compact key-value embedded data store
- MariaDB
Robust, scalable and reliable SQL server, designed to be a drop-in replacement for MySQL
- mongo-c-driver
High-performance client library for
- PostgreSQL
Powerful object-relational database system
- recutils
Set of tools and a C library for accessing human-editable, plaintext database files called recfiles
- Redis
Advanced key-value store
- sophia
Modern, embeddable key-value database
- SQLite
Self-contained, serverless, zero-configuration, transactional SQL database engine with a C interface
- UnQLite
Self-contained, serverless, zero-configuration, transactional NoSQL engine with a C interface
Deep Learning
- Darknet
Open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation
Documentation Generation
- Cxref
Generates documentation of C programs in either LaTeX, HTML, RTF or SGML
- DocOnce
Modestly-tagged markup language that can be used to generate a range of formats
- Doxygen
The de-facto standard tool for generating C documentation from annotated sources. Can generate a large range of formats
- GTK-Doc
Tool for generating C documentation from annotated sources. Has support for the Autotools. or
Editors
- Anjuta DevStudio
The GNOME IDE
- Atom
Hackable text editor for the 21st century
- Code::Blocks
Extensible, configurable IDE supporting C
- CodeLite
Cross-platform IDE
- Eclipse
IDE written in Java
- Geany
Very small and fast IDE
- KDevelop
The KDE IDE
- Qt Creator
Cross-platform IDE written with C++ and Qt, part of the Qt SDK. Supports Clang Code Model
- Visual Studio Code
Code editing, redefined. Visual Studio Code
Embedded Systems / RTOS
- Amazon FreeRTOS
RTOS for microcontrollers that makes small, low-power edge devices easy to program
- ChibiOS
RTOS with complete development environment (HAL, drivers, support files, and tools)
- Contiki
Connect low-cost, low power microcontrollers to the Internet
- Zephyr Project
Scalable real-time RTOS supporting multiple hardware architectures, optimized for resource constrained devices
- RIOT OS
Real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things
Environments
Frameworks
- APR
Apache Portable Runtime; another library of cross-platform utility functions
- C Algorithms
Collection of common algorithms and data structures for C
C Macro Collections
Header only, macro generated, generic and type-safe Collections in C
- 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
- GLib
Library of utility functions and structures, designed to be portable, efficient and powerful
- GIO
Modern and easy-to-use VFS API
- GObject
Object-oriented system and object model for C
libnih
Lightweight library of C 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. or
- qlibc
Simple and powerful C library, designed as a replacement for GLib while focusing on being small and light. (similar to )
stb
Range of single-file libraries for C
- libsrt
Safe Real-Time library for C
Game Programming / Engines
Game Programming / Resources
- Allegro
Cross-platform, video game development and multimedia library
- Chipmunk2D
Fast and lightweight 2D game physics library
- CSFML
Binding for in C
- 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
- libao
Cross-platform audio library with a wide variety of outputs
- RetroArch
The reference frontend for
- SDL and SDL2
Cross-platform development library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL. SDL2 is the most current version
- raylib
Simple and easy-to-use library to learn videogames programming
Generic Programming
- klib
Small and lightweight implementations of common algorithms and data structures
Graphics
- Cairo
-2D graphics library. or
Cogl
GPU graphics and utilities API
- Clutter
UI library based on OpenGL
- giflib
Library for reading and writing gif images
heman
Tiny library of image utilities dealing with height maps, normal maps, distance fields and the like
libcaca
ASCII renderer for terminal-based interfaces
- 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
The official PNG reference library
- libxmi
Function library for rasterizing 2D vector graphics
mozjpeg
Improved JPEG encoder
Graphics / Graphic APIs
- OpenGL
Industry adopted 2D and 3D graphics API. More resources at
- OpenGL ES
Industry adopted 2D and 3D graphics API for mobile and embedded devices
- OpenGL SC
Graphic and compute standard for industry requiring system safety certification
- Vulkan
Explicit graphic and compute API for modern cross-platform development. More resources at
Graphical User Interface
- GTK+
Cross-platform widget toolkit
- IUP
Another cross-platform widget toolkit
- Tk
Basic widget toolkit. Part of Tcl/Tk
- XForms Toolkit
Widget toolkit designed for the XWindow system
nuklear
Single-header ANSI C gui library
libui
Simple and portable (but not inflexible) GUI library
LCUI
Small C library for building user interfaces with C, XML and CSS
Hashing
Image Processing
- libccv
Modern Computer Vision Library
JSON
Learning, Reference and Tutorials / Online
- POSIX Threads Programming tutorial
(a little dated, but most of it is still valid and useful)
- The GNU C Programming Tutorial
(online PDF)
- Introduction to OpenMP
(video)
- OpenMP tutorial
(for the OpenMP3 standard)
Learning, Reference and Tutorials / Physical
- C: A Reference Manual 5E
Full reference book for C99
- C Pocket Reference
Concise reference book for C99
- The C Programming Language 2E
The original book on C, by its creators
- 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
- 21st Century C
Very good programming book on C
- Understanding and Using C Pointers
In-depth resource on pointers in C
- ZeroMQ
Book for using ZeroMQ with C
- Expert C Programming: Deep C Secrets
Interesting, in-depth and look at the innards of C
Macros
- P99
Suite of macros to implement advanced features like default function arguments, scope-bound resources, etc. (Requires C99)
Memory Allocators
- jemalloc
General purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support, commonly used in production systems
- dlmalloc
Doug Lea's malloc(3) implementation, useful for academic and research purposes
- Hoard
A Fast, Scalable, and Memory-efficient Malloc for Linux, Windows, Mac, and Solaris
- nedmalloc
An EXTREMELY FAST portable thread caching malloc(3) implementation written in C
rpmalloc
Cross platform, lock-free memory allocator
Multimedia
- FFMPEG
Complete, cross-platform solution to record, convert and stream audio and video. or
- GStreamer
Framework for audio and visual media
- lodepng
Simple PNG image decoder and encoder, requiring no other dependencies
- libsoup
GNOME HTTP client/server library. Uses GObject
- libmpv
Music-playing library. Compile with to not have the music player
- libsoundio
Library for cross-platform, real-time audio input and output. Has a range of back-ends
Networking and Internet
- asnlc
Compiler of ASN.1 specifications into C source code
- czmq
High-level binding for ZeroMQ
- GNU adns
Advanced, easy-to-use, asynch-capable DNS client library and utilities
- 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
gumbo-parser
HTML5 parsing library in C99
http-parser
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
- libuv
Cross-platform asynchronous I/O
- libevent
Event loop replacement for network servers
- libgss
Generic Security Service
- libhttpd
Library to add basic web server capabilities to an application or embedded device
- libidn
Implementation of the Stringprep, Punycode and IDNA specifications
- libmicrohttpd
Small C library that makes it easy to run an HTTP server as part of another application
- libsagui
Sagui is a cross-platform C library which helps to develop web servers or frameworks
libvldmail
Your friendly e-mail address validation library
- lwan
Experimental, scalable, high-performance HTTP server
- mongoose
Embedded web server for C
MQTT-C
Portable MQTT C client for embedded systems and PCs alike
nanomsg
C-based implementation of ZeroMQ
- OpenSSL
Implementation of the SSL and TLS protocols, and also includes a cryptography library
- oSip
SIP implementation in C without additional dependencies
pig
Linux packet crafting tool
s2n
C99 implementation of the TLS/SSL protocols, designed to be simple, fast and with security as a priority
socket99
C99 wrapper for the BSD sockets API
- Tox
Communication platform, designed to be a Skype-killer
twitc
Mini C library for interacting with the Twitter OAuth API
librg
Library for building simple and elegant cross-platform mmo client-server solutions
dyad
Asynchronous networking library
h2o
Optimized HTTP/1, HTTP/2 high performance server/library
Networking and Internet / Web Frameworks
- balde
Microframework for C based on GLib
- onion
C library to create simple HTTP servers and Web Applications
- kore
Easy to use, scalable and secure web application framework for writing web APIs in C
- klone
KLone is a fully-featured, multiplatform, web application development framework
- duda
Duda I/O is an event-driven and high performant web services framework written in C
Numerical
- apophenia
Library for statistical and scientific computing
- ATLAS
Automatically Tuned Linear Algebra Software
- BLAS
Basic Linear Algebra Subprograms; a set of routines that provide vector and matrix operations
- CDFLIB
Library with routines to evaluate cumulative density functions fo a variety of standard probability distributions. Also can compute one parameter of the CDF given the others. (No license given)
- cmathl
Pure-C Math library with a great variety of mathematical functions and CMake build support. Seeks to be close to C89/C90 compliant for portability
- Cuba
Library for multidimensional numerical integration
- 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. and
- GNU MPC
Library for complex number arithmetic
- GNU MPFR
Library for arbitrary-precision floating-point arithmetic. or
- GNU MPRIA
Portable mathematics library for multi-precision rational interval arithmetic
- GSL
The GNU Scientific Library; a sophisticated numerical library
- igraph
Library for creating and manipulating large graphs
- KISS FFT
Very simple fast Fourier transform library
- LAPACKE
C interface to
- 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
- PROB
Library that handles various discrete and continuous probability density functions
- Yeppp!
Very fast, SIMD-optimized mathematical library
Parallel Programming
- cchan
Small library for channel constructs for inter-thread communication
- ck
Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures
- mill
Go-style concurrency in C
- libdill
Structured concurrency in C
- MPICH
Another implementation of MPI
- OpenMP
Set of C pragmas designed to allow for easy parallelization of code
OpenMPI
Message passing interface implementation
- pth
Portable implementation for non-preemptive priority-based scheduling for multiple threads of execution
- pthreads
The POSIX thread library
- SLEPc
Software library for the solution of large, sparse eigenvalue problems on parallel computers
- TinyCThread
Portable, small implementation of the C11 threads API
Parsers
Regex
- PCRE
Implementation of regexes identical to that of Perl 5
regexp4
Simple and complete implementation of regular expressions with its own sintax
SLRE
Super Light Regular Expression library; a very small implementation of a subset of Perl regex syntax
sregex
Non-backtracking NFA/DFA-based Perl-compatible regex engine library
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
- libavro
C implementation of the Avro data serialization system
mpack
Another implementation of the serialization protocol
netstring-c
Netstring encoder and decoder
protobuf-c
Implementation of Google Protocol Buffer in C
- xdr
External Data Representation; a standard for data serialization
Source Code Collections
Standard Libraries
String Manipulation
- bstrlib
The Better String Library. and
- ICU
International Components for Unicode; a library for Unicode support
- libunistring
Library for manipulating Unicode strings in C
- libgiconv
Text conversion library. or
SDS
Simple Dynamic Strings; a library for handling C strings in a simpler way, but one that is compatible with normal C string functions. Available via
- shoco
Compressor for small text strings
smaz
Efficient string compression library
utf8.h
Single header utf8 string functions
utf8proc
Small, clean library for processing UTF-8 Unicode data
Testing
- CHEAT
Very simple unit testing framework
- Check
Unit testing framework for C
- CMock
Mock/stub generator for C
- cmocka
Unit testing framework with support for mock objects
- Criterion
KISS, non-intrusive C test framework
- CUnit
Another unit testing framework for C
Cutest
Library for unit testing with memory leak detection (Linux, freeBSD and Windows)
minunit
Minimal unit testing framework for C
- munit
Small but full-featured unit testing framework for C with no dependencies
- Unity
Simple unit testing framework for C
Text Editor Extensions / Atom
linter-clang
Lint C code in Atom, using Clang
linter-gcc
Lint C code in Atom, using GCC
Text Editor Extensions / Emacs
Text Editor Extensions / Vim
Syntastic
Syntax checking and linting
- 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
- biicode
Modern dependency manager for C
c
Compile and execute C "scripts" in one go on the command line. Also has shebang support
c99sh
Run C files using hash-bang
- CBMC
C Bounded Model Checker; a tool for verification of array bounds, pointer safety and user-specified assertions
- cdecl
Online service to translate C declarations into English and vice versa
- cinclude2dot
Graphs include dependencies in a C project using Graphviz
- Complexity
Tool for measuring the complexity of C source code
- CScout
Source code analyzer and refactoring browser for collections of C programs
- DDD
Graphical front-end for a range of command-line debuggers
- GDB
The GNU Project debugger; a debugger for 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 which works with C
- gprof
Performance analysis tool. Part of GNU binutils
- 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)
- indent
Formats C source code automatically to make it easier to read. Also converts from one style of source to another
- rr
Debugger that records non-deterministic executions to allow for deterministic debugging
- tup
Very fast, file-based, cross-platform build system
- unifdef
Removes #ifdef and #if directives with their delimited text without touching any other part of the file. and
- Valgrind
Range of dynamic analysis tools, including a leak checker
Utilities
ApeTagLibs
C library for working with APEv2 tags
- bfd
Library for manipulating binary object files. Part of GNU binutils
- cf4ocl
The C Framework for OpenCL; a cross-platform object-oriented framework for developing and benchmarking projects. or
CommonMark
C implementation of the CommonMark spec
CException
C implementation of exceptions
docopt.c
C implementation of a command-line option parser
- dyncall
Another foreign function interface library
- FANN
Fast Artifical Neural Network library; an implementation of neural networks
- Firm
C 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
Genann
Simple neural network library in C
- gjrand
Library of random-number generation routines. or
- 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
gperftools
Collection of utilities for measuring and improving performance
huffandpuff
Minimal Huffman encoder and decoder
kdtree
Simple library for working with KD-trees
- Kitsune
Efficient, general-purpose framework for dynamic software updating
- libavl
Library containing a range of self-balancing binary trees
libbson
BSON utility library
- libCello
Library introducing higher-level programming to C
libffi
Portable foreign-function interface library
- libgit2
Pure C implementation of Git
libimobiledevice
Cross-platform protocol library to communicate with iThings. or
libnfc
Platform-independent Near-Field Communication library
libPhenom
Deprecated, here for archival purposes. Eventing framework for building high-scalability and high-performance systems
- ncurses
Coloured terminal UI library
nope.c
C-language-based, ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers)
pbc
Protocol buffers library
rabbitmq-c
Client library for
- Ragel
DSL for state machines that compiles to C
Tinyexpr
Tiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions
- uthash
Hash table implementation, allowing existing structures to be stored in a hash table easily
cpu_features
A cross platform C99 library to get cpu features at runtime
pblog
Small, low overhead, structured logging library intended for logging formware events
libelf
ELF object file access library in C
- mcpp
Portable C preprocessor
- libusb
Generic access to USB devices
- alsa-lib
Userspace library to interact with ALSA
Capstone
Dissasembly/disassembler framework
XML
Nothing in this list matches your filter.
Featured in 8 awesome lists
Each link jumps to the spot where the list mentions awesome-c.