A curated list of C good stuff. This list contains only free software for code, and sellers who aren't evil for physical resources.
LOOKING FOR MAINTAINERS: This list is currently pretty much inactive. I'm looking for maintainers that can make it great again. See #26 for more info, but the process is simple: add or fix a couple of things in this list and you'll become a contributor to a 850+ stars list.
This list was previously maintained by @kozross. He decided to switch the list to a new platform, so I've decided to fork it so we could keep it on GitHub.
- Build Systems
- Compilers
- Compiler libraries
- Compression
- Crypto
- Database
- Deep Learning
- Documentation Generation
- Editors
- Embedded Systems
- Environments
- Frameworks
- Game Programming
- Generic Programming
- Graphics
- Graphical User Interface
- Hashing
- Image Processing
- JSON
- Learning, Reference and Tutorials
- Macros
- Memory Allocators
- Multimedia
- Networking and Internet
- Numerical
- Parallel Programming
- Parsers
- Regex
- Serialization
- Source Code Collections
- Standard Libraries
- String Manipulation
- Testing
- Text Editor Extensions
- Tools
- Utilities
- XML
These are tools to automate the building and testing of projects in C.
- aimake - Build tool designed to avoid complex configurations.
GNU GPL3 or later - Autoconf - Extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. Part of the Autotools.
GNU GPL3 or later - Automake - Tool for automatically generating
Makefile.infiles compliant with the GNU Coding Standards. Requires the use of Autoconf. Part of the Autotools.GNU GPL3 or later - CMake - Tools for cross-platform building, testing, and packaging.
3-clause BSD - Jam - Build system, designed to be easier than make. Understands C build rules implicitly.
Jam License - Libtool - Generic library support script. Part of the Autotools.
GNU GPL3 or later - Meson - Extremely fast, user-friendly build system. Based on Ninja.
Apache 2.0 - Premake - Build script generator for toolsets like Visual Studio, Xcode, or GNU Make.
3-clause BSD - SCons - An easier, more reliable and faster way to build software.
MIT - Ninja - Small, simple build system with a focus on speed.
Apache 2.0 - Bazel - Build system for various operating systems and targets.
Apache 2.0 - Buck - Build system created and used by Facebook.
Apache 2.0 - Qbs - Modern build tool for software projects.
LGPL3 - qmake - Build system included with the Qt Framework.
GNU GPL3 with Qt Exception - xmake - Cross-platform build utility based on lua.
Apache 2.0
- Clang - C compiler for LLVM. Supports C11.
NCSA - CompCert - Fully-verified C compiler. Supports almost all of C89.
GNU GPL2.1 or later - GCC - Provides a C compiler as part of its compiler set. Supports C11 and OpenMP.
GNU GPL3 or later - PCC - Venerable C compiler. Supports C99.
Various free licenses - TCC - Tiny C Compiler; a small, fast C compiler. Supports C99 (except complex types).
GNU LGPL2.1 - Intel SPMD - Compiler for a variant of the C language, for single program, multiple data programming.
Various licenses - ccache - Compiler cache designed to speedup recompilation.
GNU GPL3 or later
Libraries for use in compilers, interpreters, and low-level based projects.
- yasm - Yasm Modular Assembler Project.
2-clause BSD
- libzip - A C library for reading, creating, and modifying zip archives.
3-clause BSD - lzo - Very fast data compression library.
GNU GPL2.1 - zlib - Massively-spiffy yet delicately-unobtrusive compression library.
3-clause BSD - bzip2 - Patent free, high quality data compressor.
3-clause BSD - lz4 - Fast Compression algorithm.
- snappy - Fast compression library (implementation in C++, native bindings to C).
- zstd - Fast real-time compression algorithm
3-clause BSD - brotli - Generic lossless compression algorithm based on LZ77, Huffman coding and 2nd order context modelling
MIT - quicklz - Fast compression library.
GNU GPL2.1 - pixz - Pixz (pronounced pixie) is a parallel, indexing version of
xz.2-clause BSD
- GnuTLS - Secure communication library, implementing SSL, TLS and DTLS.
GNU LGPL2.1 or later - libgcrypt - General-purpose cryptography library, with a range of available ciphers.
GNU LGPL2.1or later (code)andGNU GPL2.1 or later (manual and tools) - OpenSSL - Implementation of the SSL and TLS protocols, and also includes a cryptography library.
Dual Licensed under the OpenSSL License and the SSLeay License - libsodium - Modern and easy-to-use crypto library.
Expat - libtomcrypt - Fairly comprehensive, modular and portable cryptographic toolkit.
Public Domain - mbed TLS - Another crypto implementation for C.
Apache 2.0 - libressl - Modernized fork of OpenSSL.
Various Licenses
This lists databases and data stores with C APIs.
- BerkeleyDB - Library for a high-performance embedded database for key-value data.
GNU AGPLv3 - Hiredis - Minimalistic client library for Redis.
3-clause BSD - LMDB - Ultra-fast, ultra-compact key-value embedded data store.
OpenLDAP License - MariaDB - Robust, scalable and reliable SQL server, designed to be a drop-in replacement for MySQL.
3-clause BSD - mongo-c-driver - High-performance client library for MongoDB.
Apache 2.0 - PostgreSQL - Powerful object-relational database system.
PostgreSQL licence - recutils - Set of tools and a C library for accessing human-editable, plaintext database files called recfiles.
GNU GPL3 or later - Redis - Advanced key-value store.
3-clause BSD - sophia - Modern, embeddable key-value database.
FreeBSD - SQLite - Self-contained, serverless, zero-configuration, transactional SQL database engine with a C interface.
Public Domain - UnQLite - Self-contained, serverless, zero-configuration, transactional NoSQL engine with a C interface.
FreeBSD
- Darknet - Open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation.
- Cxref - Generates documentation of C programs in either LaTeX, HTML, RTF or SGML.
GNU GPL2.1 - DocOnce - Modestly-tagged markup language that can be used to generate a range of formats.
3-clause BSD - Doxygen - The de-facto standard tool for generating C documentation from annotated sources. Can generate a large range of formats.
GNU GPL2.1 - GTK-Doc - Tool for generating C documentation from annotated sources. Has support for the Autotools.
GNU GPL2.1 (code)orGNU FDL1.1
These are specifically fancier, IDE-type editors. If you want a programmer's text editor, look elsewhere. Besides, whatever choice you make most likely supports C anyway.
- Anjuta DevStudio - The GNOME IDE.
GNU GPL2.1 - Atom - Hackable text editor for the 21st century.
MIT - Code::Blocks - Extensible, configurable IDE supporting C.
GNU GPL3 - CodeLite - Cross-platform IDE.
GNU GPL2.1 - Eclipse - IDE written in Java.
EPL - Geany - Very small and fast IDE.
GNU GPL2.1 or later - KDevelop - The KDE IDE.
GNU GPL2.1 - Qt Creator - Cross-platform IDE written with C++ and Qt, part of the Qt SDK. Supports Clang Code Model.
GNU GPL3 with Qt exception - Visual Studio Code - Code editing, redefined. Visual Studio Code.
These are projects that allow one to work with microcontrollers and other resource constrained architectures.
A real-time operating system (RTOS) is intended to serve real-time applications that process data with low latency delay.
- Amazon FreeRTOS - RTOS for microcontrollers that makes small, low-power edge devices easy to program.
MIT - ChibiOS - RTOS with complete development environment (HAL, drivers, support files, and tools).
Various Licenses - Contiki - Connect low-cost, low power microcontrollers to the Internet.
3-clause BSD - Zephyr Project - Scalable real-time RTOS supporting multiple hardware architectures, optimized for resource constrained devices.
Apache 2.0 - RIOT OS - Real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things.
LGPL-2.1
This is a list of 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 - MinGW-w64 - Minimalist environment for C development on Windows with 64 bit support.
Various Licenses
This section has 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 for C.
ISC - C Macro Collections - Header only, macro generated, generic and type-safe Collections in C.
MIT - CPL - The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit.
GNU GPL2.1 - EFL - Large collection of useful data structures and functions.
- GLib - Library of utility functions and structures, designed to be portable, efficient and powerful.
GNU LGPL2.1 - GIO - Modern and easy-to-use VFS API.
GNU LGPL2.1 - GObject - Object-oriented system and object model for C.
GNU LGPL2.1 - libnih - Lightweight library of C functions and structures.
GNU GPL2.1 - libU - Small library of basic utilities, including memory allocation, string manipulation and logging.
3-clause BSD - PBL - Large library of utilities, featuring data structures, among other things.
GNU LGPL2.1 or later (library)orGNU GPL2.1 or later (test code) - qlibc - Simple and powerful C library, designed as a replacement for GLib while focusing on being small and light.
qLib license(similar toFreeBSD) - stb - Range of single-file libraries for C.
Public Domain - libsrt - Safe Real-Time library for C.
3-clause BSD
These are provided as examples of C game programming code.
- Corange - Game engine in pure C.
FreeBSD - Darkplaces - Modified version of the Quake2 engine.
GNU GPL2.1 - ioquake3 - The Quake3 engine, freed at last.
GNU GPL2.1 - Orx - Portable, lightweight, plugin-based, data-driven, 2D-oriented game engine.
zlib - Quake - The Quake engine.
GNU GPL2.1 - Quake2 - The Quake2 engine.
GNU GPL2.1 - Spearmint - Engine designed for FPS games.
GNU GPL3 or later
These are libraries of all sorts that are useful for game programming.
- Allegro - Cross-platform, video game development and multimedia library.
zlib - Chipmunk2D - Fast and lightweight 2D game physics library.
Expat - CSFML - Binding for SFML in C.
zlib - 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 - libao - Cross-platform audio library with a wide variety of outputs.
GNU GPL2.1 or later - RetroArch - The reference frontend for libretro.
GNU GPL3 - 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.
zlib - raylib - Simple and easy-to-use library to learn videogames programming.
zlib
- Cairo -2D graphics library.
GNU LGPL2.1orMPLv1.1 - Cogl - GPU graphics and utilities API.
Expat - Clutter - UI library based on OpenGL.
GNU LGPL2.1 - giflib - Library for reading and writing gif images.
MIT - heman - Tiny library of image utilities dealing with height maps, normal maps, distance fields and the like.
Expat - libcaca - ASCII renderer for terminal-based interfaces.
WTFPLv2 - libimagequant - Small, portable library for high-quality conversion of RGBA images to 8-bit indexed colour images.
FreeBSD - libjpeg-turbo - Faster library for reading and writing JPEG files.
Various Licenses - libpng - The official PNG reference library.
libpng license - libxmi - Function library for rasterizing 2D vector graphics.
GNU GPL3 or later - mozjpeg - Improved JPEG encoder.
3-clause BSD
- OpenGL - Industry adopted 2D and 3D graphics API. More resources at awesome-opengl.
- 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 awesome-vulkan.
These are specifically widget toolkits.
- GTK+ - Cross-platform widget toolkit.
GNU LGPL2.1 - IUP - Another cross-platform widget toolkit.
Expat - Tk - Basic widget toolkit. Part of Tcl/Tk.
Tcl/Tk License - XForms Toolkit - Widget toolkit designed for the XWindow system.
GNU LGPL2.1 - nuklear - Single-header ANSI C gui library.
Public Domain - libui - Simple and portable (but not inflexible) GUI library.
MIT - LCUI - Small C library for building user interfaces with C, XML and CSS.
MIT
All hashing related libraries, cryptographic or not.
- jwHash - Fast hashtable implementation.
Apache 2.0 - xxHash - Extremely fast non-cryptographic hash algorithm.
2-clause BSD - libcrc - Multi platform CRC library.
MIT - murmur - C implementation of MurMur Hashing.
Public Domain - t1ha - Fast Positive Hash library.
zlib
- libccv - Modern Computer Vision Library.
3-clause BSD
- Jansson - C library for encoding, decoding and manipulating JSON.
Expat - jsmn - Minimalistic JSON parser.
Expat - json-c - Library for working with JSON.
Expat - parson - Lightweight JSON library written in C.
MIT - WJElement - Advanced JSON manipulation library, with support for JSON Schema.
LGPL, any version - YAJL - Fast C JSON streaming parser library.
ISC
This is a list of resources for learning C programming in general, or something useful relating to C programming.
- SEI CERT C Coding Standard
- C FAQ - comp.lang.c Frequently Asked Questions
- Comparison of C/POSIX standard library implementations for GNU/Linux
- GNU C Reference Manual
- Robert Pike's notes on programming in C
- Draft ANSI C Rationale
- Draft C99 Rationale
- Tutorial on pointers
- 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
- Diving into concurrency: trying out mutexes and atomics
- Introduction to OpenMP (video)
- OpenMP tutorial (for the OpenMP3 standard)
- memcpy vs memmove
- MPI tutorial
- Some unknown features or tricks in C language
- The lost art of C structure packing
- What a C programmer should know about memory
- What every C programmer should know about undefined behaviour
- Advanced metaprogramming in C
- Quick tutorial on implementing and debugging malloc, free, calloc, and realloc
- Bit twiddling hacks
- I do not know C
- Implementing smart pointers for the C programming language
- Inline functions in C
- Metaprogramming custom control structures in C
- Some dark corners of C
- Writing efficient C and C code optimization
- What every programmer should know about memory
- 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 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.
- P99 - Suite of macros to implement advanced features like default function arguments, scope-bound resources, etc. (Requires C99)
Q Public License
Implementations of memory allocators for various systems and platforms.
- jemalloc - General purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support, commonly used in production systems.
FreeBSD - dlmalloc - Doug Lea's malloc(3) implementation, useful for academic and research purposes.
Public Domain - Hoard - A Fast, Scalable, and Memory-efficient Malloc for Linux, Windows, Mac, and Solaris.
GNU GPL2 - nedmalloc - An EXTREMELY FAST portable thread caching malloc(3) implementation written in C.
GNU GPL2 - rpmalloc - Cross platform, lock-free memory allocator.
Public Domain
- FFMPEG - Complete, cross-platform solution to record, convert and stream audio and video.
GNU LGPL2.1 or laterorGNU GPL2.1 or later (some parts) - GStreamer - Framework for audio and visual media.
GNU LGPL2.1 - lodepng - Simple PNG image decoder and encoder, requiring no other dependencies.
3-clause BSD - libsoup - GNOME HTTP client/server library. Uses GObject.
GNU LGPL2.1 - libmpv - Music-playing library. Compile with
./waf configure --disable-cplayer --enable-libmpv-sharedto not have the music player.GNU GPL2.1 or later - libsoundio - Library for cross-platform, real-time audio input and output. Has a range of back-ends.
Expat
- asnlc - Compiler of ASN.1 specifications into C source code.
FreeBSD - czmq - High-level binding for ZeroMQ.
MPL2.0 - GNU adns - Advanced, easy-to-use, asynch-capable DNS client library and utilities.
GNU GPL3 or later - GNU SASL - Implementation of the Simple Authentication and Security Layer and a few common SASL mechanism.
GNU GPL3 or later - GnuTLS - Secure communication library, implementing SSL, TLS and DTLS.
GNU LGPL2.1 or later - gumbo-parser - HTML5 parsing library in C99.
Apache 2.0 - http-parser - HTTP request/response parser.
Expat - ldns - Library to simplify DNS programming.
3-clause BSD - libcurl - Client-side URL transfer library, supporting a wide range of formats.
curl license - LibEtPan - Mail library providing an efficient network for IMAP, SMTP, POP and NNTP.
3-clause BSD - libev - Yet another event loop.
FreeBSD - libuv - Cross-platform asynchronous I/O.
Expat - libevent - Event loop replacement for network servers.
3-clause BSD - libgss - Generic Security Service.
GNU GPL3 or later - libhttpd - Library to add basic web server capabilities to an application or embedded device.
GNU GPL2 - libidn - Implementation of the Stringprep, Punycode and IDNA specifications.
GNU GPL3 or later - libmicrohttpd - Small C library that makes it easy to run an HTTP server as part of another application.
GNU LGPL2.1 or later - libsagui - Sagui is a cross-platform C library which helps to develop web servers or frameworks.
GNU LGPL3 - libvldmail - Your friendly e-mail address validation library.
WTFPLv2 - lwan - Experimental, scalable, high-performance HTTP server.
GNU GPL2.1 - mongoose - Embedded web server for C.
GNU GPL2.1 - MQTT-C - Portable MQTT C client for embedded systems and PCs alike.
MIT - nanomsg - C-based implementation of ZeroMQ.
Expat - OpenSSL - Implementation of the SSL and TLS protocols, and also includes a cryptography library.
Dual Licensed under the OpenSSL License and the SSLeay License - oSip - SIP implementation in C without additional dependencies.
GNU LGPLv2.1 or later - pig - Linux packet crafting tool.
GPL2 - s2n - C99 implementation of the TLS/SSL protocols, designed to be simple, fast and with security as a priority.
Apache 2.0 - socket99 - C99 wrapper for the BSD sockets API.
ISC - Tox - Communication platform, designed to be a Skype-killer.
GNU GPL3 - twitc - Mini C library for interacting with the Twitter OAuth API.
Expat - librg - Library for building simple and elegant cross-platform mmo client-server solutions.
Apache 2.0 - dyad - Asynchronous networking library.
MIT - h2o - Optimized HTTP/1, HTTP/2 high performance server/library.
MIT
- balde - Microframework for C based on GLib.
GNU LGPLv2.1 - onion - C library to create simple HTTP servers and Web Applications.
Apache 2.0 - 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.
Apache 2.0
- apophenia - Library for statistical and scientific computing.
GNU GPL2.1 - ATLAS - Automatically Tuned Linear Algebra Software.
3-clause BSD - BLAS - Basic Linear Algebra Subprograms; a set of routines that provide vector and matrix operations.
BLAS license - 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.
MIT - Cuba - Library for multidimensional numerical integration.
GNU LGPLv3 - FFTW - The Fastest Fourier Transform in the West; a highly-optimized fast Fourier transform routine.
GNU GPL2.1 or later - FLINT - Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others.
GNU GPL2.1 or later - GLPK - GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems.
GNU GPL3 or later - GMP - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic.
GNU GPL2.1andGNU LGPLv3 - GNU MPC - Library for complex number arithmetic.
GNU LGPL3 or later - GNU MPFR - Library for arbitrary-precision floating-point arithmetic.
GNU LGPL3 or laterorGNU LGPL2.1 or later (until version 2.4.x) - GNU MPRIA - Portable mathematics library for multi-precision rational interval arithmetic.
GNU GPL3 or later - GSL - The GNU Scientific Library; a sophisticated numerical library.
GNU GPL3 - igraph - Library for creating and manipulating large graphs.
GNU GPL2 - KISS FFT - Very simple fast Fourier transform library.
3-clause BSD - LAPACKE - C interface to LAPACK.
3-clause BSD - PARI/GP - Computer algebra system for number theory; includes a compiler to C.
GNU GPL2.1 or later - PETSc - Suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations.
FreeBSD - PROB - Library that handles various discrete and continuous probability density functions.
GNU LGPL3 - Yeppp! - Very fast, SIMD-optimized mathematical library.
3-clause BSD
- cchan - Small library for channel constructs for inter-thread communication.
Public Domain - ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures.
FreeBSD - mill - Go-style concurrency in C.
X11 - libdill - Structured concurrency in C.
X11 - MPICH - Another implementation of MPI.
MPICH licence - OpenMP - Set of C pragmas designed to allow for easy parallelization of code.
3-clause BSD - OpenMPI - Message passing interface implementation.
3-clause BSD - pth - Portable implementation for non-preemptive priority-based scheduling for multiple threads of execution.
GNU GPL3 or later - pthreads - The POSIX thread library.
- SLEPc - Software library for the solution of large, sparse eigenvalue problems on parallel computers.
GNU LGPL3 - TinyCThread - Portable, small implementation of the C11 threads API.
zlib
- hammer - Parser combinators for binary formats.
GNU GPL2.1 - iniparser - Parser for
.inifiles.Expat - libconfini - Yet another INI parser.
GNU GPL3 or later - libYAML - YAML 1.1 parser and emitter.
Expat - mpc - Parser combinator library.
FreeBSD - libucl - Universal configuration library parser.
FreeBSD
"Some people, when confronted with a problem, think 'I know, I'll use regular expressions'. Now they have two problems." - Jamie Zawinski.
- PCRE - Implementation of regexes identical to that of Perl 5.
3-clause BSD - regexp4 - Simple and complete implementation of regular expressions with its own sintax.
GNU GPL3 or later - SLRE - Super Light Regular Expression library; a very small implementation of a subset of Perl regex syntax.
GNU GPL2.1 - sregex - Non-backtracking NFA/DFA-based Perl-compatible regex engine library.
3-clause BSD - TRE - POSIX-compliant, feature-full regex library.
FreeBSD
- 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.
Expat - cmp - Implementation of the MessagePack serialization protocol.
Expat - libavro - C implementation of the Avro data serialization system.
Apache 2.0 - mpack - Another implementation of the MessagePack serialization protocol.
Expat - netstring-c - Netstring encoder and decoder.
Public Domain - protobuf-c - Implementation of Google Protocol Buffer in C.
FreeBSD - xdr - External Data Representation; a standard for data serialization.
This contains 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 C code that does stuff. The full list is here.
- clib - Something of a package manager for C. Comes with a bunch of libraries of its own.
Expat - gnulib - Collection of common GNU code.
- libdjb - Collection of libraries doing various things.
(Apparently) Public Domain
This contains standard C libraries.
- Bionic - Google's C standard library, developed for Android.
3-clause BSD - dietlibc - C standard library designed for the smallest possible binaries.
GNU GPL2.1 - glibc - The GNU C Library; an implementation of the C standard library.
GNU LGPL2.1 - musl - Standard C library, compatible with POSIX 2008 and C11. Designed for static linking.
Expat
- bstrlib - The Better String Library.
3-clause BSDandGNU GPL2.1 - ICU - International Components for Unicode; a library for Unicode support.
ICU license - libunistring - Library for manipulating Unicode strings in C.
GNU LGPL3 - libgiconv - Text conversion library.
GNU LGPL2.1 (library)orGNU GPL3 (*iconv* program) - 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 clib.
FreeBSD - shoco - Compressor for small text strings.
Expat - smaz - Efficient string compression library.
3-clause BSD - utf8.h - Single header utf8 string functions.
Unlicense - utf8proc - Small, clean library for processing UTF-8 Unicode data.
License
- CHEAT - Very simple unit testing framework.
FreeBSD - Check - Unit testing framework for C.
GNU LGPL2.1 - CMock - Mock/stub generator for C.
Expat - cmocka - Unit testing framework with support for mock objects.
Apache 2.0 - Criterion - KISS, non-intrusive C test framework.
Expat - CUnit - Another unit testing framework for C.
GNU LGPL2.0 - Cutest - Library for unit testing with memory leak detection (Linux, freeBSD and Windows).
GPL2 - minunit - Minimal unit testing framework for C.
Expat - munit - Small but full-featured unit testing framework for C with no dependencies.
MIT - Unity - Simple unit testing framework for C.
Expat
While practically any decent programmer's text editor supports C, there are some extensions that make it more pleasant. This is categorized by editor.
- linter-clang - Lint C code in Atom, using Clang.
MIT - linter-gcc - Lint C code in Atom, using GCC.
MIT
- CEDET - Collection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in.
GNU GPL3 or later - Flycheck - Modern syntax checking. For C, it can use either GCC or Clang as a back-end.
GNU GPL3 or later - Yasnippet - Template system, with C templates for common code snippets.
GNU GPL3 or later
- Syntastic - Syntax checking and linting.
Do What The Fuck You Want To license - YouCompleteMe - Code completion engine for Vim.
GNU GPL3
This is a list of 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.
GNU LGPL3 - address-sanitizer - Fast memory error detector.
Apache 2.0 - biicode - Modern dependency manager for C.
Expat - c - Compile and execute C "scripts" in one go on the command line. Also has shebang support.
Expat - c99sh - Run C files using hash-bang.
FreeBSD - CBMC - C Bounded Model Checker; a tool for verification of array bounds, pointer safety and user-specified assertions.
Original BSD - cdecl - Online service to translate C declarations into English and vice versa.
Public Domain - cinclude2dot - Graphs include dependencies in a C project using Graphviz.
Any GNU GPL version (due to underspecification in the file) - Complexity - Tool for measuring the complexity of C source code.
GNU GPL3 or later - CScout - Source code analyzer and refactoring browser for collections of C programs.
GNU GPL3 - DDD - Graphical front-end for a range of command-line debuggers.
GNU GPL3 or later - GDB - The GNU Project debugger; a debugger for C.
GNU GPL3 or later - Glade - RAD tool to enable quick development of GTK+ GUIs.
GNU GPL2.1 - GMSL - GNU Make Standard Library; a collection of additional functionality for GNU Make.
3-clause BSD - GNU Global - Source code tagging tool which works with C.
GNU GPL3 - gprof - Performance analysis tool. Part of GNU binutils.
GNU GPL3 or later - Highlight - Converts source code to formatted text with nice highlighting.
GNU GPL3 - 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.
GNU GPLv3 or later - rr - Debugger that records non-deterministic executions to allow for deterministic debugging.
FreeBSD - tup - Very fast, file-based, cross-platform build system.
GNU GPL2.1 - unifdef - Removes #ifdef and #if directives with their delimited text without touching any other part of the file.
3-clause BSDandFreeBSD - Valgrind - Range of dynamic analysis tools, including a leak checker.
GNU GPL2.1
This is a 'catch-all' category for anything that doesn't fit well anywhere else.
- ApeTagLibs - C library for working with APEv2 tags.
Expat - bfd - Library for manipulating binary object files. Part of GNU binutils.
GNU GPL3 or later - cf4ocl - The C Framework for OpenCL; a cross-platform object-oriented framework for developing and benchmarking OpenCL projects.
GNU LGPL3 (library)orGNU GPL3 (project code) - CommonMark - C implementation of the CommonMark spec.
Various Licenses - CException - C implementation of exceptions.
Expat - docopt.c - C implementation of a command-line option parser.
Expat - dyncall - Another foreign function interface library.
Expat - FANN - Fast Artifical Neural Network library; an implementation of neural networks.
GNU GPL2.1 - 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.
GNU LGPLv2.1 - Genann - Simple neural network library in C.
Zlib - gjrand - Library of random-number generation routines.
GNU GPL2.1orGNU GPLv3 - GNU FreeIPMI - In-band and out-of-band IPMI implementation.
GNU GPL3 - GNU gperf - Perfect hash function generator, given a list of strings. Outputs C code.
GNU GPL3 or later - GNU Libffcall - Collection of libraries for building foreign function interfaces.
GNU GPL3 or later - gperftools - Collection of utilities for measuring and improving performance.
3-clause BSD - huffandpuff - Minimal Huffman encoder and decoder.
Public Domain - kdtree - Simple library for working with KD-trees.
3-clause BSD - Kitsune - Efficient, general-purpose framework for dynamic software updating.
GNU LGPL3 or later - libavl - Library containing a range of self-balancing binary trees.
GNU GPL3 or later - libbson - BSON utility library.
Apache 2.0 - libCello - Library introducing higher-level programming to C.
3-clause BSD - libffi - Portable foreign-function interface library.
Expat - libgit2 - Pure C implementation of Git.
GNU GPL2 only, with a linking exception - libimobiledevice - Cross-platform protocol library to communicate with iThings.
GNU LGPLv2.1 or later (library)orGNU GPL2.1 or later (tools) - libnfc - Platform-independent Near-Field Communication library.
GNU LGPL3 - libPhenom - Deprecated, here for archival purposes. Eventing framework for building high-scalability and high-performance systems.
Apache 2.0 - ncurses - Coloured terminal UI library.
GNU GPL3 or later - nope.c - C-language-based, ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers).
GNU GPL2.1 - pbc - Protocol buffers library.
Expat - rabbitmq-c - Client library for RabbitMQ.
Expat - Ragel - DSL for state machines that compiles to C.
GNU GPL2.1 - Tinyexpr - Tiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions.
zlib - uthash - Hash table implementation, allowing existing structures to be stored in a hash table easily.
1-clause BSD - cpu_features - A cross platform C99 library to get cpu features at runtime.
Apache 2.0 - pblog - Small, low overhead, structured logging library intended for logging formware events.
Apache 2.0 - libelf - ELF object file access library in C.
GNU GPL2.1 - mcpp - Portable C preprocessor.
2-clause BSD - libusb - Generic access to USB devices.
LGPL2.1 - alsa-lib - Userspace library to interact with ALSA.
LGPL2.1 - Capstone - Dissasembly/disassembler framework.
BSD 3-clause
"XML is crap. Really. There are no excuses. XML is nasty to parse for humans, and it's a disaster to parse even for computers. There's just no reason for that horrible crap to exist." - Linus Torvalds