A curated list of C good stuff. I give preference to free software for code, and sellers who aren't evil for physical resources.
This is released under the GNU Free Documentation License - its text is provided in the LICENSE file.
- Clang - A C compiler for LLVM. Supports C11. NCSA.
- GCC - Provides a C compiler as part of its compiler set. Supports C11 and OpenMP. GNU GPL3.
- PCC - A very old C compiler. Supports C99. Various licenses
- TCC - Tiny C Compiler; a small, fast C compiler. Supports C99 (except complex types). GNU GPL2.1.
This lists databases and data stores with C APIs.
- leveldb - A simple persistent key-value store. Available via clib. 3-clause BSD.
- LMDB - An ultra-fast, ultra-compact key-value embedded data store. newOpenLDAP.
- MariaDB - A robust, scalable and reliable SQL server, designed to be a drop-in replacement for MySQL. 3-clause BSD.
- PostgreSQL - A powerful object-relational database system. PostgreSQL licence
- Redis - An advanced key-value store. 3-clause BSD.
- SQLite - A self-contained, serverless, zero-configuration, transactional SQL database engine with a C interface. Public domain.
- UnQLite - A self-contained, serverless, zero-configuration, transactional NoSQL engine with a C interface. FreeBSD.
These are specifically fancier, IDE-type editors. If you want a programmer's text editor, and yours doesn't support C, I'd be quite surprised.
- Anjuta DevStudio - The GNOME IDE. GNU GPL3.
- CodeLite - A cross-platform IDE. GNU GPL2.1.
- Geany - A very small and fast IDE. GNU GPL2.1.
- KDevelop - The KDE IDE. GNU GPL2.1.
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. Apache2.0.
- C Algorithms - A collection of common algorithms and data structures for C. ISC.
- EFL - A large collection of useful data structures and functions. Various licenses, all free.
- GLib - A library of utility functions and structures, designed to be portable, efficient and powerful. GNU LGPL3.
- GIO - A modern and easy-to-use VFS API. GNU LGPL3.
- GObject - An object-oriented system and object model for C. GNU LGPL3.
- libnih - A lightweight library of C functions and structures. GNU GPL2.1.
- libU - A small library of basic utilities, including memory allocation, string manipulation and logging. 3-clause BSD.
- stb - A range of single-file libraries for C. Public domain.
- Allegro - A cross-platform, video game development and multimedia library. zlib.
- Corange - A game engine in pure C. FreeBSD.
- CSFML - A binding for SFML in C. zlib.
- FreeGLUT - An alternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts. X11.
- GLFW - A multi-platform library for creating windows with OpenGL contexts. zlib.
- ioquake3 - The Quake3 engine, freed at last. GNU GPL2.1
- SDL - A cross-platform library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL. zlib.
- klib - Small and lightweight implementations of common algorithms and data structures. Expat.
- SGLIB - Simple Generic Library; an implementation of a range of generic programming structures and idioms in C. GNU GPL3.
- Cogl - A GPU graphics and utilities API. GNU LGPL2.1.
- Clutter - A UI library based on OpenGL. GNU LGPL2.1.
These are specifically widget toolkits.
- Elementary - A widget toolkit. Part of the EFL. GNU LGPL2.1.
- GTK+ - A cross-platform widget toolkit. GNU LGPL2.1.
- IUP - Another cross-platform widget toolkit. Expat.
- Tk - A basic widget toolkit. Part of Tcl/Tk. Tcl/Tk License.
- XForms Toolkit - A widget toolkit designed for the XWindow system. GNU LGPL2.1.
- Jannson - A C library for encoding, decoding and manipulating JSON. Expat.
- jsmn - A minimalistic JSON parser. Expat.
- WJElement - Advanced JSON manipulation library, with support for JSON Schema. GNU GPL3.
- YAJL - A 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.
- Bit twiddling hacks
- The C Programming Language 2E (online PDF)
- The lost art of C structure packing
- Writing efficient C and C code optimization
- 21st Century C - A very good second programming book on C.
- C Programming: A Modern Approach - An excellent book to learn the basics from C from.
- Expert C Programming: Deep C Secrets - An interesting, in-depth and entertaining look at the innards of C.
- Head First C - A 'head-first' style book for learning C.
- Understanding and Using C Pointers - An in-depth resource on pointers in C.
- FFMPEG - A complete, cross-platform solution to record, convert and stream audio and video. GNU LGPL2.1, with some parts under GNU GPL2.1.
- GStreamer - A framework for audio and visual media. GNU LGPL2.1.
- lodepng - A simple PNG image decoder and encoder, requiring no other dependencies. 3-clause BSD.
- GnuTLS - A secure communication library, implementing SSL, TLS and DTLS. GNU LGPL2.1
- libcurl - A client-side URL transfer library, supporting a wide range of formats. curl license
- libevent - An event loop replacement for network servers. 3-clause BSD.
- OpenSSL - Implementation of the SSL and TLS protocols, and also includes a cryptography library. Dual Licensed under the OpenSSL License and the SSLeay License
- ZeroMQ - High-performance message passing networking library. GNU LGPL3.
- 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
- FFTW - The Fastest Fourier Transform in the West; a highly-optimized fast Fourier transform routine. GNU GPL2.1.
- GMP - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. GNU GPL2.1 and GNU LGPL2.1.
- GSL - The GNU Scientific Library; a sophisticated numerical library. GNU GPL3.
- KISS FFT - A very simple fast Fourier transform library. 3-clause BSD.
- LAPACKE - A C interface to LAPACK. 3-clause BSD.
- Yeppp! - Very fast, SIMD-optimized mathematical library. 3-clause BSD.
- CCAN - Modelled after Perl's CPAN, this is a big collection of C code that does stuff. The full list is here. Various licenses (all free software).
- clib - Something of a package manager for C. Comes with a bunch of libraries of its own. Expat.
- OpenMP - A set of C pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable).
- TinyCThread - A portable, small implementation of the C11 threads API. zlib.
"Some people, when confronted with a problem, think 'I know, I'll use regular expressions'. Now they have two problems." - Jamie Zawinski.
- PCRE - An implementation of regexes identical to that of Perl 5. 3-clause BSD.
- SLRE - Super Light Regular Expression library; a very small implementation of a subset of Perl regex syntax. GNU GPL2.1.
- TRE - A POSIX-compliant, feature-full regex library. FreeBSD.
- T-Rex - Another tiny regex library. zlib.
- c-capnproto - An implementation of the Cap'n Proto serialization protocol. Expat.
- msgpackalt - A simple, light and fast binary serialization library. 3-clause BSD.
- protobuf-c - An implementation of Google Protocol Buffer in C. FreeBSD.
- xdr - External Data Representation; a standard for data serialization. Standard (no license applicable).
This contains standard C libraries.
- Bionic - Google's C standard library, developed for Android. 3-clause BSD
- dietlibc - A 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 LGPL3.
- musl - A standard C library, compatible with POSIX 2008 and C11. Designed for static linking. Expat.
- CHEAT - A very simple unit testing framework. FreeBSD.
- Check - A unit testing framework for C. GNU LGPL2.1.
- CUnit - Another unit testing framework for C. GNU LGPL2.1.
- minunit - Minimal unit testing framework for C. Expat.
This is a list of useful programs to help you write and debug C code which are not editors, libraries or compilers.
- aimake - A build tool designed to avoid complex configurations. GNU GPL3.
- c99sh - Run C files using hash-bang. No license specified.
- GDB - The GNU Project debugger; a debugger for C. GNU GPL3.
- gprof - A performance analysis tool. Part of GNU binutils. GNU GPL3.
- rr - A debugger that records non-deterministic executions to allow for deterministic debugging. FreeBSD.
- Valgrind - A 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.
- bstrlib - The Better String Library. 3-clause BSD or GNU GPL2.1.
- Hans Boehm GC - Garbage collection for C? Don't mind if I do! Various licenses, all free.
- ICU - International Components for Unicode; a library for Unicode support. ICU license.
- libCello - A library introducing higher-level programming to C. 3-clause BSD.
- libffi - A portable foreign-function interface library. Expat.
- libgit2 - Pure C implementation of Git. GNU GPL2 with a linking exception.
- libPhenom - An eventing framework for building high-scalability and high-performance systems. Apache2.0.
- libuv - Cross-platform asynchronous I/O. Expat.
- Ragel - A DSL for state machines that compiles to C. GNU GPL3.
- 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.
- uthash - A hash table implementation, allowing existing structures to be stored in a hash table easily. 1-clause BSD
"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