Awesome C
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.
Compilers
- 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.
- TCC - Tiny C Compiler; a small, fast C compiler. Supports C99 (except complex types). GNU GPL2.
Database
- 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.
Editors
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.
- Geany - A very small and fast IDE. GNU GPL2.
- KDevelop - The KDE IDE. GNU GPL2.
Game Programming
- 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.
Generic Programming
- SGLIB - Simple Generic Library; an implementation of a range of generic programming structures and idioms in C. No license specified.
Graphical User Interface
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.
JSON
Learning and Tutorials
This is a list of resources for learning C programming in general, or something useful relating to C programming.
Online
Physical
- 21st Century C - A very good second programming book on C.
- 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.
Networking
Numerical
Package Manager
- clib - Something of a package manager for C. Comes with a bunch of libraries of its own. Expat.
Parallel Programming
- OpenMP - A set of C pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable).
Standard Libraries
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).
- 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.
- 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.
- 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.
Testing
Utilities
This is a 'catch-all' category for anything that doesn't fit well anywhere else.
- 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.