A curated list of C good stuff. This list contains only open-source code (as defined by the linked Open Source Definition), and sellers who aren't evil for physical resources.
This is released under a Creative Commons-Attribution-ShareAlike license,
version 4 (SPDX code CC-BY-SA-4.0
). You can find its text in the LICENSE file.
An important note: This project does not index anything C++-related; only pure C stuff is considered.
Note for contributors: If you want to make a pull request, please read CONTRIBUTING.md first.
Awesome List About C Language : Orginal List
- AI
- Build Systems
- Compilers
- Compression
- Concurrency and Parallelism
- Crypto
- Database
- Debugging
- Documentation Generation
- Editors
- Frameworks
- Game Programming
- Graphics
- Graphical User Interface
- Hashing
- JSON
- Learning, Reference and Tutorials
- Lexing and Parsing
- Memory Management
- Multimedia
- Networking and Internet
- Numerical
- Profiling
- Regex
- Serialization
- Source Code Collections
- Standard Libraries
- String Manipulation
- Testing
- Text Editor Extensions
- Tools
- Utilities
- Web Frameworks
- Windows Environments
- XML
Computer vision, neural nets, machine learning, and other similar things. Basically, if your university calls it AI, it lives here.
- ccv - C-based/Cached/Core Computer Vision library; modern computer vision. BSD-3-Clause.
- Cranium - Portable, header-only ANN library in C99. MIT.
- FANN - Fast Artifical Neural Network library; an implementation of neural networks. GPL-2.0.
- Genann - Simple ANN in C89, without additional dependencies. Zlib.
- libdeep - Deep learning library. BSD-3-Clause.
Tools that automate the building and testing of projects in C.
- Autoconf - Extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. Part of the Autotools. GPL-3.0+.
- Automake - Tool for automatically generating
Makefile.in
files compliant with the GNU Coding Standards. Requires the use of Autoconf. Part of the Autotools. GPL-3.0+. - CMake - Cross-platform family of tools designed to build, package and test software. BSD-3-Clause.
- GNU Make - Tool which controls the generation of executables and other non-source files of a program. GPL-3.0+.
- Libtool - Generic library support script. Part of the Autotools. GPL-3.0+.
- Meson - Extremely fast, user-friendly build system. Based on Ninja. Apache-2.0.
- 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. BSD-3-Clause.
- tup - Very fast, file-based, cross-platform build system. GPL-2.0.
- zproject - Project generator and build system support tool. MPL-2.0.
Compilers, as well as compiler- and compilation-related tooling.
- ccache - Compiler cache designed to speed up recompilation. GPL-3.0+.
- Clang - Compiler for LLVM. Supports C11. NCSA.
- distcc - Program that allows builds to be distributed among several machines. GPL-2.0+.
- 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. LGPL-2.1.
- GCC - Provides a C compiler as part of its compiler set. Supports C11. GPL-3.0+.
- PCC - Venerable compiler. Supports C99. Various licenses, all open-source.
- blosc - Extremely fast, multi-threaded, meta-compressor library. Various licenses, all open-source.
- clzip - C version of the high-quality data compressor Lzip (LZMA implementation). GPL-2.0+.
- CRoaring - C implementation of Roaring bitmaps. Apache-2.0.
- DENSITY - Super-fast compression library. BSD-3-Clause.
- heatshrink - Data compression/decompression library for embedded and real-time systems. ISC.
- fast_zlib - Improved zlib, which runs 2 to 10 times faster. BSD-3-Clause.
- huffandpuff - Minimal Huffman encoder and decoder. Public domain.
- libbzip2 - Patent-free, high-quality data compression library. BSD-4-Clause.
- Lizard - Formerly LZ5; an efficient compressor with very fast decompression. Achieves compression ratios comparable with zip and zlib at decompression speeds of 1000MB/s and faster. BSD-2-Clause.
- lz4 - Library for an extremely fast compression algorithm. BSD-2-Clause.
- lzo - Very fast data compression library. GPL-2.0+.
- shoco - Compressor for small text strings. MIT.
- SIMDComp - Simple library for compressing lists of integers using binary packing. Makes use of SIMD instructions on x86. BSD-3-Clause.
- smaz - Efficient string compression library. BSD-3-Clause.
- squash - Compression abstraction library, complete with some utilities. MIT.
- TurboPFor - Fastest integer compression. GPL-2.0+.
- TurboRLE - Most efficient run-length encoding. GPL-2.0+.
- zip - Really really small zip archive processing library. Unlicense.
- Zlib - Massively-spiffy yet delicately-unobtrusive compression library. BSD-3-Clause.
- Zstandard - Fast, lossless compression algorithm, targeting real-time compression scenarios at zlib-level or better compression ratios. BSD-3-Clause.
- cchan - Small library for channel constructs for inter-thread communication. Public domain.
- cf4ocl - The C Framework for OpenCL; a cross-platform object-oriented framework for developing and benchmarking OpenCL projects. LGPL-3.0.
- checkedthreads - No race condition goes unnoticed! A simple library for parallelism, with built-in checking for race conditions. BSD-2-Clause.
- ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures. BSD-2-Clause.
- libconcurrent - Concurrent programming library, using coroutines, for C11. BSD-3-Clause.
- libdill - Library which makes structured concurrent programming easy. MIT.
- 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. LGPL-3.0.
- liburcu - Data synchronization library, which scales linearly with the number of cores. LGPL-2.1+.
- mill - Go-style concurrency. MIT.
- OpenMP - Set of pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable).
- OpenMPI - Message passing interface implementation. BSD-3-Clause.
- pal - Optimized library for maths, parallel processing and data movement. Apache-2.0.
- pth - Portable implementation for non-preemptive priority-based scheduling for multiple threads of execution. GPL-3.0+.
- pthreads - POSIX thread library. Standard (no license applicable).
- TinyCThread - Portable, small implementation of the C11 threads API. Zlib.
Mostly library implementations of well-known cryptographic algorithms or protocols.
- GNU SASL - Implementation of the Simple Authentication and Security Layer and a few common SASL mechanism. GPL-3.0+.
- GnuTLS - Secure communication library, implementing SSL, TLS and DTLS. LGPL-2.1+.
- libgcrypt - General-purpose cryptography library, with a range of available ciphers. LGPL-2.1+.
- OpenSSL - Implementation of the SSL and TLS protocols. Also includes a cryptography library. Dual Licensed under the OpenSSL License and the SSLeay License.
- liboqs - Library for quantum-resistant cryptographicl algorithms. MIT.
- libsodium - Modern and easy-to-use crypto library. MIT.
- libtomcrypt - Fairly comprehensive, modular and portable cryptographic toolkit. Public domain.
- mbed TLS - Another crypto implementation. Apache-2.0.
- MIRACL - Multiprecision Integer and Rational Arithmetic Cryptographic Library; an SDK for elliptic curve cryptography. AGPL-1.0+.
- 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. Apache-2.0.
- sphlib - Set of implementations of various hash functions, including several cryptographic ones. MIT.
- trezor-crypto - Heavily-optimized crypto algorithms for embedded devices. MIT.
Databases and data stores with C APIs.
- BerkeleyDB - Library for a high-performance embedded database for key-value data. AGPL-1.0.
- Groonga - Columnar store with full-text search. LGPL-2.1.
- Hiredis - Minimalistic client library for Redis. BSD-3-Clause.
- libmongoc - High-performance client library for MongoDB. Apache-2.0.
- LMDB - Ultra-fast, ultra-compact key-value embedded data store. OLDAP-2.8.
- PostgreSQL - Powerful object-relational database system. PostgreSQL.
- recutils - Set of tools and a library for accessing human-editable, plaintext database files called recfiles. GPL-3.0+.
- Redis - Advanced key-value store. BSD-3-Clause.
- sophia - Modern, embeddable key-value database. BSD-2-Clause.
- sparkey - Simple constant key/value storage library. Designed for read-heavy loads with infrequent, large bulk inserts. Apache-2.0.
- SQLite - Self-contained, serverless, zero-configuration, transactional SQL database engine. Public domain.
- UnQLite - Self-contained, serverless, zero-configuration, transactional NoSQL engine. BSD-2-Clause.
- WhiteDB - Lightweight database library, operating entirely in main memory. GPL-3.0+.
Because we all have to do it sometimes. Various tools for making debugging easier or better, as well as libraries or code that allows better debugging work.
- 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. BSD-3-Clause.
- CBMC - C Bounded Model Checker; a tool for verification of array bounds, pointer safety and user-specified assertions. BSD-4-Clause.
- cflow - Analyzes a collection of source files and prints a graph charting control flow in the program. GPL-3.0+.
- Complexity - Tool for measuring the complexity of source code. GPL-3.0+.
- CScout - Source code analyzer and refactoring browser for C programs. GPL-3.0.
- DDD - Graphical front-end for a range of command-line debuggers. GPL-3.0+.
- debug - One-header library for easier 'printf debugging'. MIT.
- GDB - GNU Project debugger. GPL-3.0+.
- lldb - LLVM debugger. NCSA.
- rr - Debugger that records non-deterministic executions to allow for deterministic debugging. BSD-2-Clause.
- Valgrind - Range of dynamic analysis tools, including a leak checker. GPL-2.0.
- Cxref - Generates documentation in either LaTeX, HTML, RTF or SGML. GPL-2.0.
- DocOnce - Modestly-tagged markup language that can be used to generate a range of formats. BSD-3-Clause.
- Doxygen - De-facto standard tool for generating documentation from annotated sources. Can generate a large range of formats. GPL-2.0.
- GTK-Doc - Tool for generating documentation from annotated sources. Has support for the Autotools. GPL-2.0.
Fancier, IDE-type editors. If you want a programmer's text editor, look elsewhere. Besides, whatever you use most likely supports C anyway.
- Anjuta DevStudio - GNOME IDE. GPL-2.0.
- Code::Blocks - Extensible, configurable IDE supporting C. GPL-3.0.
- CodeLite - Cross-platform IDE. GPL-2.0.
- Geany - Very small and fast IDE. GPL-2.0+.
- KDevelop - KDE IDE. GPL-2.0.
Big libraries that provide data structures and other stuff you expect of a 'modern' standard library.
- APR - Apache Portable Runtime; another library of cross-platform utility functions. Apache-2.0.
- C Algorithms - Collection of common algorithms and data structures. ISC.
- Collections-C - Library of generic data structures. LGPL-3.0+.
- CPL - The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit. GPL-2.0.
- 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. LGPL-2.1.
- GIO - Modern and easy-to-use VFS API. LGPL-2.1.
- GObject - Object-oriented system and object model. LGPL-2.1.
- klib - Small and lightweight implementations of common algorithms and data structures. MIT.
- libcork - Utility functions and structures, designed for resource-constrained systems. Can be embedded. BSD-3-Clause.
- libnih - Lightweight library of functions and structures. GPL-2.0.
- libU - Small library of basic utilities, including memory allocation, string manipulation and logging. BSD-3-Clause.
- M*LIB - Library for generic, but typesafe C containers. Implemented as header-only. BSD-2-Clause
- offbrand - Collection of generic, reference-counted data structures. MIT.
- PBL - Large library of utilities, featuring data structures, among other things. LGPL-2.1+.
- qlibc - Simple and powerful library, designed as a replacement for GLib while focusing on being small and light. BSD-2-Clause.
- stb - Range of single-file libraries. Public domain.
- TBOX - Multi-platform library with a large number of capabilities. LGPL-2.1+.
Engines, libraries and other helpful things specifically for making games.
- Allegro - Cross-platform, video game development and multimedia library. Zlib.
- Chipmunk2D - Fast and lightweight 2D game physics library. MIT.
- Corange - Game engine in pure C. BSD-2-Clause.
- CSFML - Binding for SFML. Zlib.
- Darkplaces - Modified version of the Quake2 engine. GPL-2.0.
- Epoxy - Library for handling OpenGL function pointer management. MIT.
- FreeGLUT - Alternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts. X11.
- GLFW - Multi-platform library for creating windows with OpenGL contexts. Zlib.
- ioquake3 - Quake3 engine, freed at last. GPL-2.0.
- kazmath - Maths library for games. BSD-2-Clause.
- libao - Cross-platform audio library with a wide variety of outputs. GPL-2.0+.
- Orx - Portable, lightweight, plugin-based, data-driven, 2D-oriented game engine. Zlib.
- Quake - Quake engine. GPL-2.0.
- Quake2 - Quake2 engine. GPL-2.0.
- raylib - Simple and easy-to-use library to learn video game programming. Zlib.
- RetroArch - Reference frontend for libretro. GPL-3.0.
- SDL2 - Cross-platform library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL. Zlib.
- sdl-gpu - Library for high-performance, modern 2D graphics. Based on SDL. MIT.
- SIGIL - Sound, Input and Graphics Integration Library; a simple alternative to other libraries for doing all those things. Various licenses, all open-source.
- Spearmint - Engine designed for FPS games. GPL-3.0+.
Programmatic manipulation of graphics in C; if you want to make a GUI, the Graphical User Interface section has what you need.
- Cairo - 2D graphics library. LGPL-2.1 or MPL-1.1.
- Cogl - GPU graphics and utilities API. MIT.
- Clutter - UI library based on OpenGL. LGPL-2.1.
- giflib - Library for reading and writing gif images. MIT.
- graphene - Thin layer of graphical data types. MIT.
- heman - Tiny library of image utilities dealing with height maps, normal maps, distance fields and the like. MIT.
- libcaca - ASCII renderer for terminal-based interfaces. WTFPL.
- libgd - Library for the dynamic creation of images by programmers. MIT.
- libimagequant - Small, portable library for high-quality conversion of RGBA images to 8-bit indexed colour images. GPL-3.0+.
- libjpeg-turbo - Faster library for reading and writing JPEG files. Various licences.
- libpng - Official PNG reference library. Libpng.
- libRSVG - Library to render SVG files using Cairo. LGPL-2.1+.
- libsixel - Library implementing the SIXEL protocol, allowing beautiful graphics in your terminal. MIT.
- libvips - Image processing library. LGPL-2.1+.
- libxmi - Function library for rasterizing 2D vector graphics. GPL-3.0+.
- lightmapper - Single-file library for lightmap baking, using an existing OpenGL renderer. Public domain.
- mozjpeg - Improved JPEG encoder. BSD-3-Clause.
- nanovg - Anti-aliased 2D vector drawing library on top of OpenGL, for UI and visualizations. Zlib.
- OpenGL - Industry standard for high-performance graphics, with a native C binding. Various licenses.
Widget toolkits, or things meant to be used in a similar way to them.
- GTK+ - Cross-platform widget toolkit. LGPL-2.1.
- IUP - Another cross-platform widget toolkit. MIT.
- nuklear - Small, C89, single-header widget toolkit. Public domain.
- tinyfiledialogs - Single-file library for simple dialogs. Compatible with many other toolkits and OSes. Zlib.
- Tk - Basic widget toolkit. Part of Tcl/Tk. TCL.
- XForms Toolkit - Widget toolkit designed for the XWindow system. LGPL-2.1.
Hash function implementations for non-crypto purposes. Cryptographic hashes can be found in the Crypto section.
- CLHash - Library implementing the ridiculously fast CLHash hashing function. Only works on Intel Haswell or newer. Apache-2.0.
- HighwayHash - Fast, strong, SIMD-using hash function. Also contains an implementation of SipHash (although this is slower). Apache-2.0.
- t1ha - Fast Positive Hash - a portable, fast hash function. BSD-3-Clause.
- xxHash - Extremely fast hashing algorithm. Comes in 32 and 64-bit varieties. BSD-2-Clause.
- Jansson - Library for encoding, decoding and manipulating JSON. MIT.
- jsmn - Minimalistic JSON parser. MIT.
- jfes - JSON For Embedded Systems; simple JSON engine without any dependencies. MIT.
- WJElement - Advanced JSON manipulation library, with support for JSON Schema. LGPL-2.0+ or LGPL-2.1+ or LGPL-3.0+.
- YAJL - Fast streaming JSON parser library. ISC
Resources for learning C programming in general, or something useful relating to C programming.
- Benchmarks of the Lockless Memory Allocator
- C FAQ - comp.lang.c Frequently Asked Questions
- Comparison of C/POSIX standard library implementations for Linux
- Draft C11 standard
- Finding the best 64-bit simulation PRNG
- SEI CERT C Coding Standard
- A tutorial on pointers
- A tutorial on portable Makefiles
- Building C Projects
- C Programming Wikibook
- Introduction to `fun' C
- Learning C with GDB
- POSIX Threads Programming tutorial (a little dated, but most of it is still valid and useful)
- The GNU C Programming Tutorial (online PDF)
- Templating in C
- 8 gdb tricks you should know
- 10 C99 tricks
- A comprehensive MPI tutorial resource
- Diving into concurrency: trying out mutexes and atomics
- Generic C reference counting
- How to write portable C without complicating your build
- Introduction to OpenMP (video)
- OpenMP tutorial (for the OpenMP3 standard)
- memcpy vs memmove
- MPI tutorial
- Scalable C - Writing Large-Scale Distributed C
- Some unknown features or tricks in C language
- What a C programmer should know about memory
- What every C programmer should know about undefined behaviour
- Advanced metaprogramming in C
- A 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
- Solving the temporary storage problem of C macros
- Some dark corners of C
- Writing efficient C and C code optimization
- C: A Reference Manual 5E - Full reference book for C99.
- C in a Nushell 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.
- C Primer Plus 6E - Complete tutorial on programming in C11.
- C Programming: A Modern Approach - Excellent book to learn the basics from C from.
- Head First C - 'Head-first' style book for learning C.
- 21st Century C - Very good second 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 entertaining look at the innards of C.
Libraries specifically for lexical analysis (or lexing) and syntactic analysis (or parsing).
- flex - Fast lexical analyzer generator. BSD-2-Clause.
- GNU Bison - General-purpose parser generator that converts an annotated context-free grammar into a range of parsers. GPL-3.0+.
- hammer - Parser combinators for binary formats. GPL-2.0.
- mpc - Parser combinator library. BSD-2-Clause.
- re2c - Lexer generator, producing very fast lexers, with access to its internals. Public domain.
Whether a different, faster malloc or outright garbage collection, anything to do with managing C memory lives here.
- Boehm GC - Garbage collection for C? Don't mind if I do! Various licenses, all open-source.
- jemalloc - Malloc implementation that emphasizes avoidance of fragmentation and scalable concurrency support. BSD-2-Clause.
- Lockless Memory Allocator - Efficient memory allocator. GPL-3.0+.
- talloc - Hierarchical, reference-counted memory pool system with destructors. LGPL-3.0+.
- tlsf - Two-Level Segregated Fit allocator; a general-purpose, dynamic memory allocator designed to meet real-time requirements. Up-to-date implementation. BSD-3-Clause.
- aubio - Library for audio and music analysis. GPL-3.0+.
- FFMPEG - Complete, cross-platform solution to record, convert and stream audio and video. LGPL-2.1+
- GStreamer - Framework for audio and visual media. LGPL-2.1+.
- libmpv - Music-playing library. GPL-2.0+.
- libsndfile - Library for reading and writing sound files. Supports many formats. LGPL-2.1 or LGPL-3.0.
- libsoundio - Library for cross-platform, real-time audio input and output. Has a range of back-ends. MIT.
- lodepng - Simple PNG image decoder and encoder, requiring no other dependencies. BSD-3-Clause.
- Soundpipe - Lightweight music DSP library. MIT.
Low-level networking and internet-related stuff. If you want something more comprehensive and high-level, you may want the Web Frameworks section.
- asnlc - Compiler of ASN.1 specifications into C source code. BSD-2-Clause.
- CHL - C Hypertext Library - A library for writing web applications in C. GPL-3.0.
- czmq - High-level binding for ZeroMQ. MPL-2.0
- GNU adns - Advanced, easy-to-use, asynch-capable DNS client library and utilities. GPL-3.0+.
- gumbo-parser - HTML5 parsing library in C99. Apache-2.0.
- http-parser - HTTP request/response parser. MIT.
- ldns - Library to simplify DNS programming. BSD-3-Clause.
- libcurl - Client-side URL transfer library, supporting a wide range of formats. curl.
- LibEtPan - Mail library providing an efficient network for IMAP, SMTP, POP and NNTP. BSD-3-Clause.
- libev - Yet another event loop. BSD-2-Clause.
- libevent - Event loop replacement for network servers. BSD-3-Clause.
- libhttpd - Library to add basic web server capabilities to an application or embedded device. GPL-2.0.
- libidn - Implementation of the Stringprep, Punycode and IDNA specifications. GPL-3.0+.
- libmicrohttpd - Small library that makes it easy to run an HTTP server as part of another application. LGPL-2.1+.
- libonion - HTTP server library, designed to be easy to use. Apache-2.0.
- 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. GPL-3.0+.
- LibVNCServer - Cross-platform libraries to implement VNC server and/or client functionality. GPL-2.0+.
- libwebsock - Easy-to-use and powerful web socket library. LGPL-3.0.
- lwan - Experimental, scalable, high-performance HTTP server. GPL-2.0.
- mongoose - Embedded web server. GPL-2.0.
- nanomsg - C-based implementation of ZeroMQ. MIT.
- oSip - SIP implementation without additional dependencies. LGPL-2.1+.
- socket99 - C99 wrapper for the BSD sockets API. ISC.
- twitc - Mini library for interacting with the Twitter OAuth API. MIT.
- Wslay - WebSocket library. Implements version 13 of the WebSocket protocol, as described in RFC 6455. MIT.
- zyre - Framework for proximity-based peer-to-peer applications. MPL-2.0.
- apophenia - Library for statistical and scientific computing. GPL-2.0.
- Arb - Library for arbitrary-precision interval arithmetic. LGPL-2.1+.
- ATLAS - Automatically Tuned Linear Algebra Software. BSD-3-Clause.
- clBLAS - BLAS functions written in OpenCL. Apache-2.0.
- Cuba - Library for multidimensional numerical integration. LGPL-3.0.
- FFTW - The Fastest Fourier Transform in the West; a highly-optimized fast Fourier transform routine. GPL-2.0+.
- FLINT - Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others. GPL-2.0+.
- GLPK - GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems. GPL-3.0+.
- GMP - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. GPL-2.0 or LGPL-3.0.
- GNU MPC - Library for complex number arithmetic. LGPL-3.0+.
- GNU MPFR - Library for arbitrary-precision floating-point arithmetic. LGPL-3.0+.
- GNU MPRIA - Portable mathematics library for multi-precision rational interval arithmetic. GPL-3.0+.
- GSL - The GNU Scientific Library; a sophisticated numerical library. GPL-3.0.
- KISS FFT - Very simple fast Fourier transform library. BSD-3-Clause.
- LAPACKE - Interface to LAPACK. BSD-3-Clause.
- 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. GPL-2.0+.
- PETSc - Suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations. BSD-2-Clause.
- SCS - Splitting Conic Solver; a numerical optimization package for solving large-scale convex cone problems. MIT.
- SLEPc - Library for the solution of large, sparse eigenvalue problems on parallel computers. LGPL-3.0.
- TomsFastMath - Set of assembly-level-optimized maths operations, suitable for cryptographic use. Public domain.
- Yeppp! - Very fast, SIMD-optimized mathematical library. BSD-3-Clause.
- gperftools - Collection of utilities for measuring and improving performance. BSD-3-Clause.
- gprof - Performance analysis tool. Part of GNU binutils. GPL-3.0+.
- OProfile - Statistical profiler for Linux. Can profile any code (including the kernel!) with low overhead and without recompilation. GPL-2.0.
- perf - Linux kernel-based profiler with a lot of functionality. GPL-2.0.
- Onigmo - Fork of Oniguruma, supporting more advanced regexps. BSD-2-Clause.
- Oniguruma - Regex library supporting a wide range of encodings, and incorporating many security-oriented fixes. BSD-2-Clause.
- PCRE - Implementation of regexes identical to that of Perl 5. BSD-3-Clause.
- SLRE - Super Light Regular Expression library; a very small implementation of a subset of Perl regex syntax. GPL-2.0.
- TRE - POSIX-compliant, feature-full regex library. BSD-2-Clause.
- binn - Binary serialization format, meant to be compact, fast and easy-to-use. Apache-2.0.
- c-capnproto - Implementation of the Cap'n Proto serialization protocol. MIT.
- cmp - Implementation of the MessagePack serialization protocol. MIT.
- flatcc - FlatBuffers compiler and library. Apache-2.0.
- libavro - Implementation of the Avro data serialization system. Apache-2.0.
- mpack - Another implementation of the MessagePack serialization protocol. MIT.
- OPIC - Object Persistence in C; a revolutionary serialization framework, with matching on-disk and in-memory representations. GPL-3.0+.
- protobuf-c - Implementation of Google Protocol Buffer. BSD-2-Clause.
- tpl - Small binary serialization library. MIT.
- xdr - External Data Representation; a standard for data serialization. Standard (no license applicable).
Collections of small source code. If you want something big and integrated, check the Frameworks section.
- CCAN - Modelled after Perl's CPAN, this is a big collection of code that does stuff. The full list is here. Various licenses, all open-source.
- clib - Something of a package manager. Comes with a bunch of libraries of its own. MIT.
- gnulib - Collection of common GNU code. Various licenses, all open-source.
- libdjb - Collection of libraries doing various things. (Apparently) public domain.
- par - Bunch of single-file libraries. MIT.
Implementations of the (standard-mandated) C standard library.
- Bionic - Google's standard library, developed for Android. BSD-3-Clause.
- cloudlibc - Standard library based on the concept of capability-based security. BSD-2-Clause.
- dietlibc - Standard library designed for the smallest possible binaries. GPL-2.0.
- glibc - The GNU C Library; an implementation of the standard library. LGPL-2.1.
- musl - Standard library, compatible with POSIX 2008 and C11. Designed for static linking. MIT.
- PDCLib - The Public Domain C Library. Implements most of C99 and some of C11. CC0.
- uClibc-ng - Small C library for developing embedded systems. LGPL-2.1+.
- bstrlib - The Better String Library. BSD-3-Clause or GPL-2.0.
- ICU - International Components for Unicode; a library for Unicode support. ICU.
- libunistring - Library for manipulating Unicode strings. LGPL-3.0.
- libgiconv - Text conversion library. LGPL-2.1.
- librope - UTF-8 rope ('heavy' string) library. MIT.
- 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 clib. BSD-2-Clause.
- utf8.h - Single-header UTF-8 library, designed to mimic C-style string functions. Public domain.
- utf8proc - Library for processing UTF-8 data. MIT.
- CHEAT - Very simple unit testing framework. BSD-2-Clause.
- Check - Unit testing framework. LGPL-2.1.
- clar - Clear and simple unit testing framework. MIT.
- CMock - Mock/stub generator. MIT.
- cmocka - Unit testing framework with support for mock objects. Apache-2.0.
- Criterion - KISS, non-intrusive test framework. MIT.
- ctest - Yet another unit testing framework. Apache-2.0.
- CUnit - Another unit testing framework. LGPL-2.1+.
- greatest - Unit testing library in one file, with no memory allocation. MIT.
- minctest - Unit testing microlibrary. BSD-3-Clause.
- munit - Small unit testing framework. MIT.
- theft - Property-based testing (similar to Quickcheck). MIT.
- Unity - Simple unit testing framework. MIT.
While practically any decent programmer's text editor supports C, there are some extensions that make it more pleasant. These are labelled by editor.
- CCompletion - Notepad++ autocompletion plugin. Works with all identifiers recognized by Ctags. This is a download link. GPL-2.0+.
- CEDET - Collection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in. GPL-3.0+.
- Flycheck - Modern syntax checking for Emacs. For C, it can use either GCC or Clang as a back-end. GPL-3.0+.
- Neomake - Async :make and linting framework for Neovim/Vim. MIT.
- Syntastic - Syntax checking and linting for Vim. WTFPL.
- YASnippet - Emacs code template system, with C templates for common snippets. GPL-3.0+.
- YouCompleteMe - Code completion engine for Vim. GPL-3.0.
Useful programs to help you write and debug C code which are not editors, libraries or compilers.
- Artistic Style - Fast and small automatic source code formatter that supports C. LGPL-3.0.
- address-sanitizer - Fast memory error detector. Apache-2.0.
- biicode - Modern dependency manager. MIT.
- c - Compile and execute C "scripts" in one go on the command line. Also has shebang support. MIT.
- c99sh - Run C files using hash-bang. BSD-2-Clause.
- cdecl - Online service to translate C declarations into English and vice versa. Public domain.
- cinclude2dot - Graphs include dependencies in a project using Graphviz. GPL-1.0+ or GPL-2.0+ or GPL-3.0+.
- ClangCheck - Static analysis tool, designed to work with Clang. NCSA.
- Cppcheck - Static analysis tool. Despite the name, works well with C. GPL-3.0+.
- Glade - RAD tool to enable quick development of GTK+ GUIs. GPL-2.0.
- GMSL - GNU Make Standard Library; a collection of additional functionality for GNU Make. BSD-3-Clause.
- GNU Global - Source code tagging tool. GPL-3.0.
- GPP - General-purpose preprocessor. More versatile than the C preprocessor, but more flexible than m4. LGPL-3.0+.
- Highlight - Converts source code to formatted text with nice highlighting. GPL-3.0.
- include-what-you-use - Helps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it). NCSA.
- indent - Formats C source code automatically to make it easier to read. Also converts from one style of source to another. GPL-3.0+.
- SMACK - Modular software verification toolchain and a self-contained software verifier. Currently only works with programs compiled using Clang. MIT.
- unifdef - Removes #ifdef and #if directives with their delimited text without touching any other part of the file. BSD-3-Clause or BSD-2-Clause.
A 'catch-all' category for anything that doesn't fit well anywhere else.
- ApeTagLibs - Library for working with APEv2 tags. MIT.
- argparse - Command-line argument parsing library, inspired by Python's argparse module. MIT.
- attr - Commands for manipulating filesystem extended attributes. GPL-2.0+.
- bfd - Library for manipulating binary object files. Part of GNU binutils. GPL-3.0+.
- Caffeine - Library for building daemons and services for Linux and FreeBSD systems. LGPL-2.1+.
- CException - Implementation of exceptions. MIT.
- CommonMark - Implementation of the CommonMark spec. Variety of licenses, all open-source.
- CRIU - Checkpoint/Restore In Userspace; a software tool (with a C API) for 'freezing' a running application to disk, then restoring it. GPL-2.0 or LGPL-2.1.
- D-Bus - Simple way for applications to talk to one another. AFL-2.1 or GPL-2.0+.
- Discount - Simple implementation of a Markdown parser. BSD-3-Clause.
- dlx - Implementation of Knuth's Algorithm X, with example solvers. GPL-3.0+.
- docopt.c - Implementation of a command-line option parser. MIT.
- dyncall - Another foreign function interface library. MIT.
- GNU FreeIPMI - In-band and out-of-band IPMI implementation. GPL-3.0.
- GNU gperf - Perfect hash function generator, given a list of strings. Outputs C code. GPL-3.0+.
- GNU Libffcall - Collection of libraries for building foreign function interfaces. GPL-3.0+.
- Hoedown - Fully-standards-compliant, extension-supporting, UTF-8 aware, fast Markdown parser. MIT.
- iniparser - Parser for .ini files. MIT.
- kdtree - Simple library for working with KD-trees. BSD-3-Clause.
- Kitsune - Efficient, general-purpose framework for dynamic software updating. LGPL-3.0+.
- libavl - Library containing a range of self-balancing binary trees. GPL-3.0+.
- libbson - BSON utility library. Apache-2.0.
- libCello - Library introducing higher-level programming to C. BSD-3-Clause.
- libcmark - Library for parsing the CommonMark dialect of Markdown. BSD-2-Clause.
- libcoap - Implementation of the Constrained Application Protocol. GPL-2.0+ or BSD-2-Clause.
- libconfuse - Small configuration file parser library. ISC.
- libcox - Library which permits cross-platform system calls and standard utilities across different operating systems. BSD-2-Clause.
- libcsv - Simple, streaming CSV parser. LGPL-2.1+.
- libffi - Portable foreign-function interface library. MIT.
- libgeohash - Pure C implementation of the Geohash algorithm. BSD-3-Clause.
- libgss - Generic Security Service. GPL-3.0+.
- liblfds - Portable lock-free data structure library. Public domain (more exactly, whatever license you want).
- libimobiledevice - Cross-platform protocol library to communicate with iThings. LGPL-2.1+.
- libnfc - Platform-independent Near-Field Communication library. LGPL-3.0.
- libPhenom - Eventing framework for building high-scalability and high-performance systems. Apache-2.0.
- libpostal - Library for parsing and normalization of street addresses around the world. Powered by statistical NLP and open geo data. MIT.
- libtrading - Implementation of network protocols for communicating with exchanges, dark pools and other trading venues. Supports FIX, FIX/FAST and many proprietary protocols. BSD-2-Clause.
- libucl - Universal configuration library parser. BSD-2-Clause.
- libuv - Cross-platform asynchronous I/O. MIT.
- libYAML - YAML 1.1 parser and emitter. MIT.
- 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. BSD-2-Clause.
- linenoise - Small, self-contained alternative to readline and libedit. BSD-2-Clause.
- ncurses - Coloured terminal UI library. MIT.
- netbsd-curses - Simplified and small version of ncurses, with the same interface. BSD-3-Clause.
- nope.c - Ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers). GPL-2.0.
- pbc - Protocol buffers library. MIT.
- progressbar - Easy-to-use library for displaying text progress bars. BSD-3-Clause.
- rabbitmq-c - Client library for RabbitMQ. MIT.
- Ragel - DSL for state machines that compiles to C. GPL-2.0.
- sort - Collection of sorting routines, which type-specialize at compile-time with a user-defined type. MIT.
- termbox - Library for writing text-based interfaces. MIT.
- tinyexpr - Tiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions. BSD-3-Clause.
- Tulip Indicators - Library of functions for technical analysis of financial data. LGPL-3.0+.
- vector.h - Header library for typed lists. MIT.
- XLSX I/O - Cross-platform library for reading and writing .xlsx files. MIT.
- zlog - Reliable, pure C logging library. LGPL-2.1.
- zproto - Protocol framework for ZeroMQ. MIT.
Comprehensive and integrated solutions for building the next brilliant web application in C.
- balde - Microframework based on GLib. LGPL-2.1.
- facil.io - Mini-framework for web applications. Includes a fast HTTP and Websocket server, and also supports custom protocols. MIT.
- KLone - Fully-featured, multi-platform, web application development framework, targeted especially at embedded systems and appliances. BSD-3-Clause.
- Kore - Easy-to-use web application framework for writing scalable web APIs in C. ISC.
Technologies designed to bring Windows into the 21st century with respect to support for C.
- Cygwin - Designed to emulate a POSIX-compatible environment extensively under Windows. Various licenses, all open-source.
- MinGW-w64 - Minimalist environment for C development on Windows with 64 bit support. Various licenses, all open-source.
- 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.