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.
- leveldb - A simple persistent key-value store. Available via clib. 3-clause BSD.
- MariaDB - A robust, scalable and reliable SQL server, designed to be a drop-in replacement for MySQL. 3-clause BSD.
- 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.
- CSFML - A binding for SFML in C. zlib.
- Allegro - A cross-platform, video game development and multimedia library. zlib.
- 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.
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.
- 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.
- 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.
- 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.
- lodepng - A simple PNG image decoder and encoder, requiring no other dependencies. 3-clause BSD.
- libcurl - A client-side URL transfer library, supporting a wide range of formats. curl license
- ZeroMQ - High-performance message passing networking library. GNU LGPL3.
- 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.
- Yeppp! - Very fast, SIMD-optimized mathematical library. 3-clause BSD.
- 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).
"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.
This includes both C standard library implementations and libraries seeking to provide most of what a 'modern' standard library would have (containers, string processing, etc).
- APR - Apache Portable Runtime; another library of cross-platform utility functions. Apache2.0.
- Bionic - Google's C standard library, developed for Android. 3-clause BSD
- C Algorithms - A collection of common algorithms and data structures for C. ISC.
- dietlibc - A C standard library designed for the smallest possible binaries. GNU GPL2.1.
- GLib - A library of utility functions and structures, designed to be portable, efficient and powerful. GNU LGPL3.
- glibc - The GNU C Library; an implementation of the C standard library. 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.
- 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.
- GDB - The GNU Project debugger; a debugger for C. GNU GPL3.
- gprof - A performance analysis tool. Part of GNU binutils. GNU GPL3.
- 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.
- ICU - International Components for Unicode; a library for Unicode support. ICU license.
- 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.
"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