1578 lines
87 KiB
HTML
1578 lines
87 KiB
HTML
<h1 id="awesome-c-awesomelist-status">awesome-c <a
|
||
href="https://github.com/sindresorhus/awesome"><img
|
||
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
|
||
alt="Awesome" /></a><a
|
||
href="https://travis-ci.org/aleksandar-todorovic/awesome-c"><img
|
||
src="https://api.travis-ci.org/aleksandar-todorovic/awesome-c.svg?branch=master"
|
||
alt="List Status" /></a></h1>
|
||
<p>A curated list of C good stuff. This list contains <em>only</em> <a
|
||
href="https://en.wikipedia.org/wiki/Free_software">free software</a> for
|
||
code, and sellers who aren’t evil for physical resources.</p>
|
||
<p><strong>LOOKING FOR MAINTAINERS:</strong> This list is currently
|
||
pretty much inactive. I’m looking for maintainers that can make it great
|
||
again. See <a
|
||
href="https://github.com/aleksandar-todorovic/awesome-c/issues/26">#26</a>
|
||
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.</p>
|
||
<p>This list was previously maintained by <a
|
||
href="https://github.com/kozross"><span class="citation"
|
||
data-cites="kozross">@kozross</span></a>. He decided to switch the list
|
||
to a <a href="https://notabug.org/koz.ross/awesome-c">new platform</a>,
|
||
so I’ve decided to fork it so we could keep it on GitHub.</p>
|
||
<h1 id="contents">Contents</h1>
|
||
<h2 id="contents-1">Contents</h2>
|
||
<ul>
|
||
<li><a href="#build-systems">Build Systems</a></li>
|
||
<li><a href="#compilers">Compilers</a></li>
|
||
<li><a href="#compiler-libraries">Compiler libraries</a></li>
|
||
<li><a href="#compression">Compression</a></li>
|
||
<li><a href="#crypto">Crypto</a></li>
|
||
<li><a href="#database">Database</a></li>
|
||
<li><a href="#deep-learning">Deep Learning</a></li>
|
||
<li><a href="#documentation-generation">Documentation
|
||
Generation</a></li>
|
||
<li><a href="#editors">Editors</a></li>
|
||
<li><a href="#embedded-systems">Embedded Systems</a>
|
||
<ul>
|
||
<li><a href="#rtos">RTOS</a></li>
|
||
</ul></li>
|
||
<li><a href="#environments">Environments</a></li>
|
||
<li><a href="#frameworks">Frameworks</a></li>
|
||
<li><a href="#game-programming">Game Programming</a>
|
||
<ul>
|
||
<li><a href="#engines">Engines</a></li>
|
||
<li><a href="#resources">Resources</a></li>
|
||
</ul></li>
|
||
<li><a href="#generic-programming">Generic Programming</a></li>
|
||
<li><a href="#graphics">Graphics</a>
|
||
<ul>
|
||
<li><a href="#graphic-apis">Graphic APIs</a></li>
|
||
</ul></li>
|
||
<li><a href="#graphical-user-interface">Graphical User
|
||
Interface</a></li>
|
||
<li><a href="#hashing">Hashing</a></li>
|
||
<li><a href="#image-processing">Image Processing</a></li>
|
||
<li><a href="#json">JSON</a></li>
|
||
<li><a href="#learning-reference-and-tutorials">Learning, Reference and
|
||
Tutorials</a>
|
||
<ul>
|
||
<li><a href="#online">Online</a>
|
||
<ul>
|
||
<li><a href="#reference">Reference</a>
|
||
<ul>
|
||
<li><a href="#language-standards">Language Standards</a></li>
|
||
</ul></li>
|
||
<li><a href="#beginner">Beginner</a></li>
|
||
<li><a href="#intermediate">Intermediate</a></li>
|
||
<li><a href="#advanced">Advanced</a></li>
|
||
<li><a href="#self-study-courses">Self-study courses</a></li>
|
||
</ul></li>
|
||
<li><a href="#physical">Physical</a>
|
||
<ul>
|
||
<li><a href="#reference-1">Reference</a></li>
|
||
<li><a href="#beginner-1">Beginner</a></li>
|
||
<li><a href="#intermediate-1">Intermediate</a></li>
|
||
<li><a href="#advanced-1">Advanced</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#macros">Macros</a></li>
|
||
<li><a href="#memory-allocators">Memory Allocators</a></li>
|
||
<li><a href="#multimedia">Multimedia</a></li>
|
||
<li><a href="#networking-and-internet">Networking and Internet</a>
|
||
<ul>
|
||
<li><a href="#web-frameworks">Web Frameworks</a></li>
|
||
</ul></li>
|
||
<li><a href="#numerical">Numerical</a></li>
|
||
<li><a href="#parallel-programming">Parallel Programming</a></li>
|
||
<li><a href="#parsers">Parsers</a></li>
|
||
<li><a href="#regex">Regex</a></li>
|
||
<li><a href="#serialization">Serialization</a></li>
|
||
<li><a href="#source-code-collections">Source Code Collections</a></li>
|
||
<li><a href="#standard-libraries">Standard Libraries</a></li>
|
||
<li><a href="#string-manipulation">String Manipulation</a></li>
|
||
<li><a href="#testing">Testing</a></li>
|
||
<li><a href="#text-editor-extensions">Text Editor Extensions</a>
|
||
<ul>
|
||
<li><a href="#atom">Atom</a></li>
|
||
<li><a href="#emacs">Emacs</a></li>
|
||
<li><a href="#vim">Vim</a></li>
|
||
</ul></li>
|
||
<li><a href="#tools">Tools</a></li>
|
||
<li><a href="#utilities">Utilities</a></li>
|
||
<li><a href="#xml">XML</a></li>
|
||
</ul>
|
||
<h2 id="build-systems">Build Systems</h2>
|
||
<p>These are tools to automate the building and testing of projects in
|
||
C.</p>
|
||
<ul>
|
||
<li><a href="http://nethack4.org/projects/aimake/">aimake</a> - Build
|
||
tool designed to avoid complex configurations. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a
|
||
href="https://www.gnu.org/software/autoconf/autoconf.html">Autoconf</a>
|
||
- Extensible package of M4 macros that produce shell scripts to
|
||
automatically configure software source code packages. Part of the
|
||
Autotools. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a
|
||
href="https://www.gnu.org/software/automake/automake.html">Automake</a>
|
||
- Tool for automatically generating <code>Makefile.in</code> files
|
||
compliant with the GNU Coding Standards. Requires the use of Autoconf.
|
||
Part of the Autotools. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://cmake.org/">CMake</a> - Tools for cross-platform
|
||
building, testing, and packaging. <a
|
||
href="https://gitlab.kitware.com/cmake/cmake/raw/master/Copyright.txt"><code>3-clause BSD</code></a></li>
|
||
<li><a
|
||
href="https://www.perforce.com/documentation/jam-documentation">Jam</a>
|
||
- Build system, designed to be easier than make. Understands C build
|
||
rules implicitly. <a
|
||
href="https://en.wikipedia.org/wiki/Perforce_Jam#License"><code>Jam License</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/libtool/">Libtool</a> -
|
||
Generic library support script. Part of the Autotools. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://mesonbuild.com/">Meson</a> - Extremely fast,
|
||
user-friendly build system. Based on Ninja. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://github.com/premake/premake-core">Premake</a> -
|
||
Build script generator for toolsets like Visual Studio, Xcode, or GNU
|
||
Make. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://www.scons.org/">SCons</a> - An easier, more
|
||
reliable and faster way to build software. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/ninja-build/ninja">Ninja</a> - Small,
|
||
simple build system with a focus on speed. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://bazel.build/">Bazel</a> - Build system for various
|
||
operating systems and targets. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://buck.build/">Buck</a> - Build system created and
|
||
used by Facebook. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://doc.qt.io/qbs/">Qbs</a> - Modern build tool for
|
||
software projects. <a
|
||
href="https://code.qt.io/cgit/qbs/qbs.git/tree/LICENSE.LGPLv3"><code>LGPL3</code></a></li>
|
||
<li><a href="https://doc.qt.io/qt-5/qmake-manual.html">qmake</a> - Build
|
||
system included with the Qt Framework. <a
|
||
href="https://github.com/qt/qtbase/blob/5.11/LICENSE.GPL3-EXCEPT"><code>GNU GPL3 with Qt Exception</code></a></li>
|
||
<li><a href="https://xmake.io/">xmake</a> - Cross-platform build utility
|
||
based on lua. <a
|
||
href="https://github.com/xmake-io/xmake/blob/master/LICENSE.md"><code>Apache 2.0</code></a></li>
|
||
</ul>
|
||
<h2 id="compilers">Compilers</h2>
|
||
<ul>
|
||
<li><a href="http://clang.llvm.org/">Clang</a> - C compiler for LLVM.
|
||
Supports C11. <a
|
||
href="https://directory.fsf.org/wiki/License:NCSA"><code>NCSA</code></a></li>
|
||
<li><a href="http://compcert.inria.fr/">CompCert</a> - Fully-verified C
|
||
compiler. Supports almost all of C89. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later</code></a></li>
|
||
<li><a href="https://gcc.gnu.org/">GCC</a> - Provides a C compiler as
|
||
part of its compiler set. Supports C11 and OpenMP. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="http://pcc.ludd.ltu.se/">PCC</a> - Venerable C compiler.
|
||
Supports C99. <a
|
||
href="http://pcc.ludd.ltu.se/licenses/"><code>Various free licenses</code></a></li>
|
||
<li><a href="https://bellard.org/tcc/">TCC</a> - Tiny C Compiler; a
|
||
small, fast C compiler. Supports C99 (except complex types). <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="http://ispc.github.io/">Intel SPMD</a> - Compiler for a
|
||
variant of the C language, for single program, multiple data
|
||
programming. <a
|
||
href="https://github.com/ispc/ispc/blob/master/LICENSE.txt"><code>Various licenses</code></a></li>
|
||
<li><a href="https://ccache.dev/">ccache</a> - Compiler cache designed
|
||
to speedup recompilation. <a
|
||
href="https://ccache.dev/license.html"><code>GNU GPL3 or later</code></a></li>
|
||
</ul>
|
||
<h2 id="compiler-libraries">Compiler libraries</h2>
|
||
<p>Libraries for use in compilers, interpreters, and low-level based
|
||
projects.</p>
|
||
<ul>
|
||
<li><a href="http://yasm.tortall.net/">yasm</a> - Yasm Modular Assembler
|
||
Project. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-2-Clause"><code>2-clause BSD</code></a></li>
|
||
</ul>
|
||
<h2 id="compression">Compression</h2>
|
||
<ul>
|
||
<li><a href="https://libzip.org/">libzip</a> - A C library for reading,
|
||
creating, and modifying zip archives. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://www.oberhumer.com/opensource/lzo/">lzo</a> - Very
|
||
fast data compression library. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://zlib.net/">zlib</a> - Massively-spiffy yet
|
||
delicately-unobtrusive compression library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://www.bzip.org/">bzip2</a> - Patent free, high quality
|
||
data compressor. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://lz4.github.io/lz4/">lz4</a> - Fast Compression
|
||
algorithm.</li>
|
||
<li><a href="https://github.com/google/snappy">snappy</a> - Fast
|
||
compression library (implementation in C++, native bindings to C).</li>
|
||
<li><a href="http://facebook.github.io/zstd/">zstd</a> - Fast real-time
|
||
compression algorithm <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://github.com/google/brotli">brotli</a> - Generic
|
||
lossless compression algorithm based on LZ77, Huffman coding and 2nd
|
||
order context modelling <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
<li><a href="http://www.quicklz.com/index.php">quicklz</a> - Fast
|
||
compression library. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://github.com/vasi/pixz">pixz</a> - Pixz (pronounced
|
||
pixie) is a parallel, indexing version of <code>xz</code>. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-2-Clause"><code>2-clause BSD</code></a></li>
|
||
</ul>
|
||
<h2 id="crypto">Crypto</h2>
|
||
<ul>
|
||
<li><a href="https://www.gnutls.org/">GnuTLS</a> - Secure communication
|
||
library, implementing SSL, TLS and DTLS. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1 or later</code></a></li>
|
||
<li><a
|
||
href="https://gnupg.org/related_software/libgcrypt/">libgcrypt</a> -
|
||
General-purpose cryptography library, with a range of available ciphers.
|
||
<a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1or later (code)</code></a>
|
||
and <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later (manual and tools)</code></a></li>
|
||
<li><a href="https://www.openssl.org/">OpenSSL</a> - Implementation of
|
||
the SSL and TLS protocols, and also includes a cryptography library. <a
|
||
href="https://www.openssl.org/source/license.html"><code>Dual Licensed under the OpenSSL License and the SSLeay License</code></a></li>
|
||
<li><a href="https://download.libsodium.org/doc/">libsodium</a> - Modern
|
||
and easy-to-use crypto library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://www.libtom.net/">libtomcrypt</a> - Fairly
|
||
comprehensive, modular and portable cryptographic toolkit. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="https://tls.mbed.org/">mbed TLS</a> - Another crypto
|
||
implementation for C. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://www.libressl.org/">libressl</a> - Modernized fork
|
||
of OpenSSL. <a
|
||
href="https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/lib/libssl/LICENSE?rev=1.12"><code>Various Licenses</code></a></li>
|
||
</ul>
|
||
<h2 id="database">Database</h2>
|
||
<p>This lists databases and data stores with C APIs.</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.oracle.com/database/berkeley-db/">BerkeleyDB</a> -
|
||
Library for a high-performance embedded database for key-value data. <a
|
||
href="https://www.gnu.org/licenses/agpl-3.0.html"><code>GNU AGPLv3</code></a></li>
|
||
<li><a href="https://github.com/redis/hiredis">Hiredis</a> -
|
||
Minimalistic client library for Redis. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://github.com/LMDB/lmdb">LMDB</a> - Ultra-fast,
|
||
ultra-compact key-value embedded data store. <a
|
||
href="https://directory.fsf.org/wiki/License:OLDAP-2.7"><code>OpenLDAP License</code></a></li>
|
||
<li><a href="https://mariadb.com/">MariaDB</a> - Robust, scalable and
|
||
reliable SQL server, designed to be a drop-in replacement for MySQL. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://mongoc.org/">mongo-c-driver</a> - High-performance
|
||
client library for <a href="https://www.mongodb.com/">MongoDB</a>. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://www.postgresql.org/">PostgreSQL</a> - Powerful
|
||
object-relational database system. <a
|
||
href="https://opensource.org/licenses/postgresql"><code>PostgreSQL licence</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/recutils/">recutils</a> - Set
|
||
of tools and a C library for accessing human-editable, plaintext
|
||
database files called recfiles. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://redis.io/">Redis</a> - Advanced key-value store. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://sophia.systems/">sophia</a> - Modern, embeddable
|
||
key-value database. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="https://www.sqlite.org/about.html">SQLite</a> -
|
||
Self-contained, serverless, zero-configuration, transactional SQL
|
||
database engine with a C interface. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="https://unqlite.org/">UnQLite</a> - Self-contained,
|
||
serverless, zero-configuration, transactional NoSQL engine with a C
|
||
interface. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
</ul>
|
||
<h2 id="deep-learning">Deep Learning</h2>
|
||
<ul>
|
||
<li><a href="https://pjreddie.com/darknet/">Darknet</a> - Open source
|
||
neural network framework written in C and CUDA. It is fast, easy to
|
||
install, and supports CPU and GPU computation.</li>
|
||
</ul>
|
||
<h2 id="documentation-generation">Documentation Generation</h2>
|
||
<ul>
|
||
<li><a href="http://www.gedanken.org.uk/software/cxref/">Cxref</a> -
|
||
Generates documentation of C programs in either LaTeX, HTML, RTF or
|
||
SGML. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a
|
||
href="https://hplgit.github.io/doconce/doc/web/index.html">DocOnce</a> -
|
||
Modestly-tagged markup language that can be used to generate a range of
|
||
formats. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://www.doxygen.nl/">Doxygen</a> - The de-facto standard
|
||
tool for generating C documentation from annotated sources. Can generate
|
||
a large range of formats. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://www.gtk.org/gtk-doc/">GTK-Doc</a> - Tool for
|
||
generating C documentation from annotated sources. Has support for the
|
||
Autotools. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU GPL2.1 (code)</code></a>
|
||
or <a
|
||
href="https://www.gnu.org/licenses/old-licenses/fdl-1.1.html"><code>GNU FDL1.1</code></a></li>
|
||
</ul>
|
||
<h2 id="editors">Editors</h2>
|
||
<p>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.</p>
|
||
<ul>
|
||
<li><a href="http://anjuta.org/">Anjuta DevStudio</a> - The GNOME IDE.
|
||
<a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://atom.io/">Atom</a> - Hackable text editor for the
|
||
21st century. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
<li><a href="http://www.codeblocks.org/">Code::Blocks</a> - Extensible,
|
||
configurable IDE supporting C. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
<li><a href="https://codelite.org/">CodeLite</a> - Cross-platform IDE.
|
||
<a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://www.eclipse.org/ide/">Eclipse</a> - IDE written in
|
||
Java. <a
|
||
href="https://directory.fsf.org/wiki/License:EPL-1.0"><code>EPL</code></a></li>
|
||
<li><a href="https://www.geany.org/">Geany</a> - Very small and fast
|
||
IDE. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later</code></a></li>
|
||
<li><a href="https://www.kdevelop.org/">KDevelop</a> - The KDE IDE. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a
|
||
href="https://www.qt.io/qt-features-libraries-apis-tools-and-ide/#ide">Qt
|
||
Creator</a> - Cross-platform IDE written with C++ and Qt, part of the Qt
|
||
SDK. Supports Clang Code Model. <a
|
||
href="https://github.com/qt-creator/qt-creator/blob/master/LICENSE.GPL3-EXCEPT"><code>GNU GPL3 with Qt exception</code></a></li>
|
||
<li><a href="https://code.visualstudio.com/">Visual Studio Code</a> -
|
||
Code editing, redefined. Visual Studio Code.</li>
|
||
</ul>
|
||
<h2 id="embedded-systems">Embedded Systems</h2>
|
||
<p>These are projects that allow one to work with microcontrollers and
|
||
other resource constrained architectures.</p>
|
||
<h3 id="rtos">RTOS</h3>
|
||
<p>A real-time operating system (RTOS) is intended to serve real-time
|
||
applications that process data with low latency delay.</p>
|
||
<ul>
|
||
<li><a href="https://aws.amazon.com/freertos/">Amazon FreeRTOS</a> -
|
||
RTOS for microcontrollers that makes small, low-power edge devices easy
|
||
to program. <a
|
||
href="https://github.com/aws/amazon-freertos/blob/master/LICENSE"><code>MIT</code></a></li>
|
||
<li><a href="http://www.chibios.org/dokuwiki/doku.php">ChibiOS</a> -
|
||
RTOS with complete development environment (HAL, drivers, support files,
|
||
and tools). <a
|
||
href="http://www.chibios.org/dokuwiki/doku.php?id=chibios:licensing:start"><code>Various Licenses</code></a></li>
|
||
<li><a href="http://www.contiki-os.org/">Contiki</a> - Connect low-cost,
|
||
low power microcontrollers to the Internet. <a
|
||
href="https://github.com/contiki-os/contiki/blob/master/LICENSE"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://www.zephyrproject.org/">Zephyr Project</a> -
|
||
Scalable real-time RTOS supporting multiple hardware architectures,
|
||
optimized for resource constrained devices. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://www.riot-os.org/">RIOT OS</a> - Real-time
|
||
multi-threading operating system that supports a range of devices that
|
||
are typically found in the Internet of Things. <a
|
||
href="https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html"><code>LGPL-2.1</code></a></li>
|
||
</ul>
|
||
<h2 id="environments">Environments</h2>
|
||
<p>This is a list of technologies designed to bring Windows into the
|
||
21st century with respect to support for C.</p>
|
||
<ul>
|
||
<li><a href="https://cygwin.com/">Cygwin</a> - Designed to emulate a
|
||
POSIX-compatible environment extensively under Windows. <a
|
||
href="https://cygwin.com/licensing.html"><code>Various Licenses</code></a></li>
|
||
<li><a href="http://mingw-w64.yaxm.org/doku.php/start">MinGW-w64</a> -
|
||
Minimalist environment for C development on Windows with 64 bit support.
|
||
<a
|
||
href="http://mingw.org/license"><code>Various Licenses</code></a></li>
|
||
</ul>
|
||
<h2 id="frameworks">Frameworks</h2>
|
||
<p>This section has big libraries that provide data structures and other
|
||
stuff you expect of a ‘modern’ standard library.</p>
|
||
<ul>
|
||
<li><a href="http://apr.apache.org/">APR</a> - Apache Portable Runtime;
|
||
another library of cross-platform utility functions. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://fragglet.github.io/c-algorithms/">C Algorithms</a>
|
||
- Collection of common algorithms and data structures for C. <a
|
||
href="https://directory.fsf.org/wiki/License:ISC"><code>ISC</code></a></li>
|
||
<li><a href="https://github.com/LeoVen/C-Macro-Collections">C Macro
|
||
Collections</a> - Header only, macro generated, generic and type-safe
|
||
Collections in C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.eso.org/sci/software/cpl/">CPL</a> - The Common
|
||
Pipeline Library; a set of libraries designed to be a comprehensive,
|
||
efficient and robust software toolkit. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://www.enlightenment.org/">EFL</a> - Large collection
|
||
of useful data structures and functions.</li>
|
||
<li><a href="https://wiki.gnome.org/Projects/GLib">GLib</a> - Library of
|
||
utility functions and structures, designed to be portable, efficient and
|
||
powerful. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="https://developer.gnome.org/gio/">GIO</a> - Modern and
|
||
easy-to-use VFS API. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="https://developer.gnome.org/gobject/stable/">GObject</a> -
|
||
Object-oriented system and object model for C. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="https://github.com/keybuk/libnih">libnih</a> - Lightweight
|
||
library of C functions and structures. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://www.koanlogic.com/libu/">libU</a> - Small library of
|
||
basic utilities, including memory allocation, string manipulation and
|
||
logging. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://www.mission-base.com/peter/source/">PBL</a> - Large
|
||
library of utilities, featuring data structures, among other things. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1 or later (library)</code></a>
|
||
or <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later (test code)</code></a></li>
|
||
<li><a href="http://wolkykim.github.io/qlibc/">qlibc</a> - Simple and
|
||
powerful C library, designed as a replacement for GLib while focusing on
|
||
being small and light. <a
|
||
href="https://github.com/wolkykim/qlibc/blob/master/LICENSE"><code>qLib license</code></a>
|
||
(similar to <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a>)</li>
|
||
<li><a href="https://github.com/nothings/stb">stb</a> - Range of
|
||
single-file libraries for C. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="https://faragon.github.io/libsrt.html">libsrt</a> - Safe
|
||
Real-Time library for C. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
</ul>
|
||
<h2 id="game-programming">Game Programming</h2>
|
||
<h3 id="engines">Engines</h3>
|
||
<p>These are provided as examples of C game programming code.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/orangeduck/Corange">Corange</a> - Game
|
||
engine in pure C. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="https://icculus.org/twilight/darkplaces/">Darkplaces</a> -
|
||
Modified version of the Quake2 engine. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://ioquake3.org/">ioquake3</a> - The Quake3 engine,
|
||
freed at last. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://orx-project.org/">Orx</a> - Portable, lightweight,
|
||
plugin-based, data-driven, 2D-oriented game engine. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
<li><a href="https://github.com/id-Software/Quake">Quake</a> - The Quake
|
||
engine. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://github.com/id-Software/Quake-2">Quake2</a> - The
|
||
Quake2 engine. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://clover.moe/spearmint/">Spearmint</a> - Engine
|
||
designed for FPS games. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
</ul>
|
||
<h3 id="resources">Resources</h3>
|
||
<p>These are libraries of all sorts that are useful for game
|
||
programming.</p>
|
||
<ul>
|
||
<li><a href="https://liballeg.org/">Allegro</a> - Cross-platform, video
|
||
game development and multimedia library. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
<li><a href="http://chipmunk-physics.net/">Chipmunk2D</a> - Fast and
|
||
lightweight 2D game physics library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://www.sfml-dev.org/download/csfml/">CSFML</a> -
|
||
Binding for <a href="https://www.sfml-dev.org/index.php">SFML</a> in C.
|
||
<a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
<li><a href="http://freeglut.sourceforge.net/">FreeGLUT</a> -
|
||
Alternative to the OpenGL Utility Toolkit. Allows the creation and
|
||
management of windows with OpenGL contexts. <a
|
||
href="https://directory.fsf.org/wiki/License:X11"><code>X11</code></a></li>
|
||
<li><a href="https://www.glfw.org/">GLFW</a> - Multi-platform library
|
||
for creating windows with OpenGL contexts. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
<li><a href="https://xiph.org/ao/">libao</a> - Cross-platform audio
|
||
library with a wide variety of outputs. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later</code></a></li>
|
||
<li><a href="https://www.libretro.com/">RetroArch</a> - The reference
|
||
frontend for <a href="https://www.libretro.com/">libretro</a>. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
<li><a href="https://www.libsdl.org/">SDL and SDL2</a> - 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. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
<li><a href="https://www.raylib.com/">raylib</a> - Simple and
|
||
easy-to-use library to learn videogames programming. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
</ul>
|
||
<h2 id="generic-programming">Generic Programming</h2>
|
||
<ul>
|
||
<li><a href="http://attractivechaos.github.io/klib/#About">klib</a> -
|
||
Small and lightweight implementations of common algorithms and data
|
||
structures. <a
|
||
href="https://en.wikipedia.org/wiki/MIT_License"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="graphics">Graphics</h2>
|
||
<ul>
|
||
<li><a href="https://www.cairographics.org/">Cairo</a> -2D graphics
|
||
library. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a>
|
||
or <a
|
||
href="https://directory.fsf.org/wiki/License:MPL-1.1"><code>MPLv1.1</code></a></li>
|
||
<li><a href="https://github.com/rib/cogl-web/wiki">Cogl</a> - GPU
|
||
graphics and utilities API. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://blogs.gnome.org/clutter/get-it/">Clutter</a> - UI
|
||
library based on OpenGL. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="https://sourceforge.net/projects/giflib/">giflib</a> -
|
||
Library for reading and writing gif images. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/prideout/heman">heman</a> - Tiny library
|
||
of image utilities dealing with height maps, normal maps, distance
|
||
fields and the like. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/cacalabs/libcaca">libcaca</a> - ASCII
|
||
renderer for terminal-based interfaces. <a
|
||
href="http://www.wtfpl.net/txt/copying/"><code>WTFPLv2</code></a></li>
|
||
<li><a href="https://pngquant.org/lib/">libimagequant</a> - Small,
|
||
portable library for high-quality conversion of RGBA images to 8-bit
|
||
indexed colour images. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="https://libjpeg-turbo.org/">libjpeg-turbo</a> - Faster
|
||
library for reading and writing JPEG files. <a
|
||
href="https://libjpeg-turbo.org/About/License"><code>Various Licenses</code></a></li>
|
||
<li><a href="http://www.libpng.org">libpng</a> - The official PNG
|
||
reference library. <a
|
||
href="http://www.libpng.org/pub/png/src/libpng-LICENSE.txt"><code>libpng license</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/libxmi/">libxmi</a> - Function
|
||
library for rasterizing 2D vector graphics. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://github.com/mozilla/mozjpeg">mozjpeg</a> - Improved
|
||
JPEG encoder. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
</ul>
|
||
<h3 id="graphic-apis">Graphic APIs</h3>
|
||
<ul>
|
||
<li><a href="https://www.opengl.org/">OpenGL</a> - Industry adopted 2D
|
||
and 3D graphics API. More resources at <a
|
||
href="https://github.com/eug/awesome-opengl">awesome-opengl</a>.</li>
|
||
<li><a href="https://www.khronos.org/opengles/">OpenGL ES</a> - Industry
|
||
adopted 2D and 3D graphics API for mobile and embedded devices.</li>
|
||
<li><a href="https://www.khronos.org/openglsc/">OpenGL SC</a> - Graphic
|
||
and compute standard for industry requiring system safety
|
||
certification.</li>
|
||
<li><a href="https://www.khronos.org/vulkan/">Vulkan</a> - Explicit
|
||
graphic and compute API for modern cross-platform development. More
|
||
resources at <a
|
||
href="https://github.com/vinjn/awesome-vulkan">awesome-vulkan</a>.</li>
|
||
</ul>
|
||
<h2 id="graphical-user-interface">Graphical User Interface</h2>
|
||
<p>These are specifically <a
|
||
href="https://en.wikipedia.org/wiki/Widget_toolkit">widget
|
||
toolkits</a>.</p>
|
||
<ul>
|
||
<li><a href="https://www.gtk.org/">GTK+</a> - Cross-platform widget
|
||
toolkit. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="http://webserver2.tecgraf.puc-rio.br/iup/">IUP</a> -
|
||
Another cross-platform widget toolkit. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="http://www.tcl.tk/">Tk</a> - Basic widget toolkit. Part of
|
||
Tcl/Tk. <a
|
||
href="http://www.tcl.tk/software/tcltk/license.html"><code>Tcl/Tk License</code></a></li>
|
||
<li><a href="http://xforms-toolkit.org/">XForms Toolkit</a> - Widget
|
||
toolkit designed for the XWindow system. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="https://github.com/vurtun/nuklear">nuklear</a> -
|
||
Single-header ANSI C gui library. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="https://github.com/andlabs/libui">libui</a> - Simple and
|
||
portable (but not inflexible) GUI library. <a
|
||
href="https://github.com/andlabs/libui/blob/master/LICENSE"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/lc-soft/LCUI/">LCUI</a> - Small C
|
||
library for building user interfaces with C, XML and CSS. <a
|
||
href="https://github.com/lc-soft/LCUI/blob/develop/LICENSE.TXT"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="hashing">Hashing</h2>
|
||
<p>All hashing related libraries, cryptographic or not.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/watmough/jwHash">jwHash</a> - Fast
|
||
hashtable implementation. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="http://cyan4973.github.io/xxHash/">xxHash</a> - Extremely
|
||
fast non-cryptographic hash algorithm. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-2-Clause"><code>2-clause BSD</code></a></li>
|
||
<li><a href="https://github.com/PeterScott/murmur3">libcrc</a> - Multi
|
||
platform CRC library. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/ispc/ispc">murmur</a> - C implementation
|
||
of MurMur Hashing. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="https://github.com/leo-yuriev/t1ha">t1ha</a> - Fast
|
||
Positive Hash library. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
</ul>
|
||
<h2 id="image-processing">Image Processing</h2>
|
||
<ul>
|
||
<li><a href="http://libccv.org">libccv</a> - Modern Computer Vision
|
||
Library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
</ul>
|
||
<h2 id="json">JSON</h2>
|
||
<ul>
|
||
<li><a href="http://www.digip.org/jansson/">Jansson</a> - C library for
|
||
encoding, decoding and manipulating JSON. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://zserge.com/jsmn.html">jsmn</a> - Minimalistic JSON
|
||
parser. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/json-c/json-c/wiki">json-c</a> - Library
|
||
for working with JSON. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/kgabis/parson">parson</a> - Lightweight
|
||
JSON library written in C. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
<li><a
|
||
href="https://github.com/netmail-open/wjelement/wiki">WJElement</a> -
|
||
Advanced JSON manipulation library, with support for JSON Schema. <a
|
||
href="https://github.com/netmail-open/wjelement/"><code>LGPL, any version</code></a></li>
|
||
<li><a href="https://lloyd.github.io/yajl/">YAJL</a> - Fast C JSON
|
||
streaming parser library. <a
|
||
href="https://directory.fsf.org/wiki/License:ISC"><code>ISC</code></a></li>
|
||
</ul>
|
||
<h2 id="learning-reference-and-tutorials">Learning, Reference and
|
||
Tutorials</h2>
|
||
<p>This is a list of resources for learning C programming in general, or
|
||
something useful relating to C programming.</p>
|
||
<h3 id="online">Online</h3>
|
||
<h4 id="reference">Reference</h4>
|
||
<ul>
|
||
<li><a
|
||
href="https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard">SEI
|
||
CERT C Coding Standard</a></li>
|
||
<li><a href="http://c-faq.com/">C FAQ - comp.lang.c Frequently Asked
|
||
Questions</a></li>
|
||
<li><a href="http://www.etalabs.net/compare_libcs.html">Comparison of
|
||
C/POSIX standard library implementations for GNU/Linux</a></li>
|
||
<li><a href="https://www.gnu.org/software/gnu-c-manual/">GNU C Reference
|
||
Manual</a></li>
|
||
<li><a href="http://www.lysator.liu.se/c/pikestyle.html">Robert Pike’s
|
||
notes on programming in C</a></li>
|
||
<li><a href="http://port70.net/~nsz/c/c89/rationale/">Draft ANSI C
|
||
Rationale</a></li>
|
||
<li><a href="http://port70.net/~nsz/c/c99/C99RationaleV5.10.pdf">Draft
|
||
C99 Rationale</a></li>
|
||
</ul>
|
||
<h5 id="language-standards">Language Standards</h5>
|
||
<ul>
|
||
<li><a href="http://port70.net/~nsz/c/c89/c89-draft.txt">Draft ANSI C
|
||
(C89) standard</a></li>
|
||
<li><a
|
||
href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf">Draft
|
||
C99 standard</a></li>
|
||
<li><a href="http://www.open-std.org/JTC1/SC22/WG14/">Draft C11
|
||
standard</a></li>
|
||
</ul>
|
||
<h4 id="beginner">Beginner</h4>
|
||
<ul>
|
||
<li><a
|
||
href="http://www.cs.ucsb.edu/~mikec/cs16/misc/ptrtut12/index.htm">Tutorial
|
||
on pointers</a></li>
|
||
<li><a href="http://nethack4.org/blog/building-c.html">Building C
|
||
Projects</a></li>
|
||
<li><a href="https://en.wikibooks.org/wiki/C_Programming">C Programming
|
||
Wikibook</a></li>
|
||
<li><a
|
||
href="https://gist.github.com/eatonphil/21b3d6569f24ad164365">Introduction
|
||
to ‘fun’ C</a></li>
|
||
<li><a
|
||
href="https://www.recurse.com/blog/5-learning-c-with-gdb">Learning C
|
||
with GDB</a></li>
|
||
<li><a href="https://computing.llnl.gov/tutorials/pthreads/">POSIX
|
||
Threads Programming tutorial</a> (a little dated, but most of it is
|
||
still valid and useful)</li>
|
||
<li><a href="http://www.crasseux.com/books/ctut.pdf">The GNU C
|
||
Programming Tutorial</a> (online PDF)</li>
|
||
<li><a href="http://blog.pkh.me/p/20-templating-in-c.html">Templating in
|
||
C</a></li>
|
||
</ul>
|
||
<h4 id="intermediate">Intermediate</h4>
|
||
<ul>
|
||
<li><a
|
||
href="https://blogs.oracle.com/linux/8-gdb-tricks-you-should-know-v2">8
|
||
gdb tricks you should know</a></li>
|
||
<li><a href="https://blog.noctua-software.com/c-tricks.html">10 C99
|
||
tricks</a></li>
|
||
<li><a href="https://jvns.ca/blog/2014/12/14/fun-with-threads/">Diving
|
||
into concurrency: trying out mutexes and atomics</a></li>
|
||
<li><a
|
||
href="https://www.youtube.com/playlist?list=PLLX-Q6B8xqZ8n8bwjGdzBJ25X2utwnoEG">Introduction
|
||
to OpenMP</a> (video)</li>
|
||
<li><a href="https://computing.llnl.gov/tutorials/openMP/">OpenMP
|
||
tutorial</a> (for the OpenMP3 standard)</li>
|
||
<li><a
|
||
href="https://web.archive.org/web/20170620131430/https://www.tedunangst.com/flak/post/memcpy-vs-memmove">memcpy
|
||
vs memmove</a></li>
|
||
<li><a href="https://computing.llnl.gov/tutorials/mpi/">MPI
|
||
tutorial</a></li>
|
||
<li><a
|
||
href="https://proprogramming.org/some-unknown-features-or-tricks-in-c-language/">Some
|
||
unknown features or tricks in C language</a></li>
|
||
<li><a href="http://www.catb.org/esr/structure-packing/">The lost art of
|
||
C structure packing</a></li>
|
||
<li><a href="https://marek.vavrusa.com/memory/">What a C programmer
|
||
should know about memory</a></li>
|
||
<li><a
|
||
href="http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html">What
|
||
every C programmer should know about undefined behaviour</a></li>
|
||
</ul>
|
||
<h4 id="advanced">Advanced</h4>
|
||
<ul>
|
||
<li><a href="http://250bpm.com/blog:56">Advanced metaprogramming in
|
||
C</a></li>
|
||
<li><a href="http://danluu.com/malloc-tutorial/">Quick tutorial on
|
||
implementing and debugging malloc, free, calloc, and realloc</a></li>
|
||
<li><a href="https://graphics.stanford.edu/~seander/bithacks.html">Bit
|
||
twiddling hacks</a></li>
|
||
<li><a href="https://kukuruku.co/post/i-do-not-know-c/">I do not know
|
||
C</a></li>
|
||
<li><a href="https://snai.pe/c/c-smart-pointers/">Implementing smart
|
||
pointers for the C programming language</a></li>
|
||
<li><a href="http://www.greenend.org.uk/rjk/tech/inline.html">Inline
|
||
functions in C</a></li>
|
||
<li><a
|
||
href="https://www.chiark.greenend.org.uk/~sgtatham/mp/">Metaprogramming
|
||
custom control structures in C</a></li>
|
||
<li><a
|
||
href="https://docs.google.com/presentation/d/1h49gY3TSiayLMXYmRMaAEMl05FaJ-Z6jDOWOz3EsqqQ/edit?pli=1#slide=id.gaf50702c_0153">Some
|
||
dark corners of C</a></li>
|
||
<li><a
|
||
href="https://www.codeproject.com/articles/6154/writing-efficient-c-and-c-code-optimization">Writing
|
||
efficient C and C code optimization</a></li>
|
||
<li><a href="https://www.akkadia.org/drepper/cpumemory.pdf">What every
|
||
programmer should know about memory</a></li>
|
||
</ul>
|
||
<h4 id="self-study-courses">Self-study courses</h4>
|
||
<ul>
|
||
<li><a href="https://cppinstitute.com/study-resources">C Programming
|
||
Language Certified Associate preparation course</a></li>
|
||
</ul>
|
||
<h3 id="physical">Physical</h3>
|
||
<h4 id="reference-1">Reference</h4>
|
||
<ul>
|
||
<li><a href="http://careferencemanual.com/">C: A Reference Manual 5E</a>
|
||
- Full reference book for C99.</li>
|
||
<li><a href="http://shop.oreilly.com/product/9780596004361.do">C Pocket
|
||
Reference</a> - Concise reference book for C99.</li>
|
||
<li><a
|
||
href="https://en.wikipedia.org/wiki/The_C_Programming_Language">The C
|
||
Programming Language 2E</a> - The original book on C, by its
|
||
creators.</li>
|
||
</ul>
|
||
<h4 id="beginner-1">Beginner</h4>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.pearson.com/us/higher-education/program/Prata-C-Primer-Plus-6th-Edition/PGM4399.html">C
|
||
Primer Plus 6E</a> - Complete tutorial on programming in C11.</li>
|
||
<li><a href="http://knking.com/books/c2/index.html">C Programming: A
|
||
Modern Approach</a> - Excellent book to learn the basics of C.</li>
|
||
<li><a href="http://shop.oreilly.com/product/0636920015482.do">Head
|
||
First C</a> - ‘Head-first’ style book for learning C.</li>
|
||
</ul>
|
||
<h4 id="intermediate-1">Intermediate</h4>
|
||
<ul>
|
||
<li><a href="http://shop.oreilly.com/product/0636920033677.do">21st
|
||
Century C</a> - Very good <em>second</em> programming book on C.</li>
|
||
<li><a
|
||
href="http://shop.oreilly.com/product/0636920028000.do">Understanding
|
||
and Using C Pointers</a> - In-depth resource on pointers in C.</li>
|
||
<li><a
|
||
href="http://shop.oreilly.com/product/0636920026136.do">ZeroMQ</a> -
|
||
Book for using ZeroMQ with C.</li>
|
||
</ul>
|
||
<h4 id="advanced-1">Advanced</h4>
|
||
<ul>
|
||
<li><a href="https://dl.acm.org/citation.cfm?id=179241">Expert C
|
||
Programming: Deep C Secrets</a> - Interesting, in-depth and
|
||
<em>entertaining</em> look at the innards of C.</li>
|
||
</ul>
|
||
<h2 id="macros">Macros</h2>
|
||
<ul>
|
||
<li><a href="http://p99.gforge.inria.fr/">P99</a> - Suite of macros to
|
||
implement advanced features like default function arguments, scope-bound
|
||
resources, etc. (Requires C99) <a
|
||
href="https://tldrlegal.com/license/q-public-license-1.0-(qpl-1.0)#summary"><code>Q Public License</code></a></li>
|
||
</ul>
|
||
<h2 id="memory-allocators">Memory Allocators</h2>
|
||
<p>Implementations of memory allocators for various systems and
|
||
platforms.</p>
|
||
<ul>
|
||
<li><a href="http://jemalloc.net/">jemalloc</a> - General purpose
|
||
malloc(3) implementation that emphasizes fragmentation avoidance and
|
||
scalable concurrency support, commonly used in production systems. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="http://g.oswego.edu/pub/misc/malloc.c">dlmalloc</a> - Doug
|
||
Lea’s malloc(3) implementation, useful for academic and research
|
||
purposes. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="http://hoard.org/">Hoard</a> - A Fast, Scalable, and
|
||
Memory-efficient Malloc for Linux, Windows, Mac, and Solaris. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL2</code></a></li>
|
||
<li><a
|
||
href="http://www.nedprod.com/programs/portable/nedmalloc/">nedmalloc</a>
|
||
- An EXTREMELY FAST portable thread caching malloc(3) implementation
|
||
written in C. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL2</code></a></li>
|
||
<li><a href="https://github.com/rampantpixels/rpmalloc">rpmalloc</a> -
|
||
Cross platform, lock-free memory allocator. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
</ul>
|
||
<h2 id="multimedia">Multimedia</h2>
|
||
<ul>
|
||
<li><a href="https://www.ffmpeg.org/">FFMPEG</a> - Complete,
|
||
cross-platform solution to record, convert and stream audio and video.
|
||
<a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1 or later</code></a>
|
||
or <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later (some parts)</code></a></li>
|
||
<li><a href="https://gstreamer.freedesktop.org/">GStreamer</a> -
|
||
Framework for audio and visual media. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="https://lodev.org/lodepng/">lodepng</a> - Simple PNG image
|
||
decoder and encoder, requiring no other dependencies. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a
|
||
href="https://wiki.gnome.org/action/show/Projects/libsoup?action=show&redirect=LibSoup">libsoup</a>
|
||
- GNOME HTTP client/server library. Uses GObject. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="https://mpv.io/">libmpv</a> - Music-playing library.
|
||
Compile with
|
||
<code>./waf configure --disable-cplayer --enable-libmpv-shared</code> to
|
||
not have the music player. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later</code></a></li>
|
||
<li><a href="http://libsound.io/">libsoundio</a> - Library for
|
||
cross-platform, real-time audio input and output. Has a range of
|
||
back-ends. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
</ul>
|
||
<h2 id="networking-and-internet">Networking and Internet</h2>
|
||
<ul>
|
||
<li><a href="http://lionet.info/asn1c/compiler.html">asnlc</a> -
|
||
Compiler of ASN.1 specifications into C source code. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="http://czmq.zeromq.org/">czmq</a> - High-level binding for
|
||
ZeroMQ. <a
|
||
href="https://www.gnu.org/licenses/license-list.html#MPL-2.0"><code>MPL2.0</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/adns/">GNU adns</a> -
|
||
Advanced, easy-to-use, asynch-capable DNS client library and utilities.
|
||
<a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/gsasl/">GNU SASL</a> -
|
||
Implementation of the Simple Authentication and Security Layer and a few
|
||
common SASL mechanism. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://www.gnutls.org/">GnuTLS</a> - Secure communication
|
||
library, implementing SSL, TLS and DTLS. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1 or later</code></a></li>
|
||
<li><a href="https://github.com/google/gumbo-parser">gumbo-parser</a> -
|
||
HTML5 parsing library in C99. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://github.com/nodejs/http-parser">http-parser</a> -
|
||
HTTP request/response parser. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://www.nlnetlabs.nl/projects/ldns/index.html">ldns</a>
|
||
- Library to simplify DNS programming. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://curl.haxx.se/libcurl/">libcurl</a> - Client-side
|
||
URL transfer library, supporting a wide range of formats. <a
|
||
href="https://curl.haxx.se/docs/copyright.html"><code>curl license</code></a></li>
|
||
<li><a href="http://www.etpan.org/">LibEtPan</a> - Mail library
|
||
providing an efficient network for IMAP, SMTP, POP and NNTP. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://software.schmorp.de/pkg/libev.html">libev</a> - Yet
|
||
another event loop. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="http://libuv.org/">libuv</a> - Cross-platform asynchronous
|
||
I/O. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="http://libevent.org/">libevent</a> - Event loop replacement
|
||
for network servers. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/gss/">libgss</a> - Generic
|
||
Security Service. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://hughes.com.au/products/libhttpd/">libhttpd</a> -
|
||
Library to add basic web server capabilities to an application or
|
||
embedded device. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL2</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/libidn/">libidn</a> -
|
||
Implementation of the Stringprep, Punycode and IDNA specifications. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a
|
||
href="https://www.gnu.org/software/libmicrohttpd/">libmicrohttpd</a> -
|
||
Small C library that makes it easy to run an HTTP server as part of
|
||
another application. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1 or later</code></a></li>
|
||
<li><a href="https://risoflora.github.io/libsagui/">libsagui</a> - Sagui
|
||
is a cross-platform C library which helps to develop web servers or
|
||
frameworks. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3</code></a></li>
|
||
<li><a
|
||
href="https://github.com/dertuxmalwieder/libvldmail">libvldmail</a> -
|
||
Your friendly e-mail address validation library. <a
|
||
href="http://www.wtfpl.net/txt/copying/"><code>WTFPLv2</code></a></li>
|
||
<li><a href="https://lwan.ws/">lwan</a> - Experimental, scalable,
|
||
high-performance HTTP server. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://cesanta.com/">mongoose</a> - Embedded web server
|
||
for C. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://github.com/LiamBindle/MQTT-C">MQTT-C</a> - Portable
|
||
MQTT C client for embedded systems and PCs alike. <a
|
||
href="https://raw.githubusercontent.com/LiamBindle/MQTT-C/master/LICENSE"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/nanomsg/nanomsg">nanomsg</a> - C-based
|
||
implementation of ZeroMQ. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://www.openssl.org/">OpenSSL</a> - Implementation of
|
||
the SSL and TLS protocols, and also includes a cryptography library. <a
|
||
href="https://www.openssl.org/source/license.html"><code>Dual Licensed under the OpenSSL License and the SSLeay License</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/osip/">oSip</a> - SIP
|
||
implementation in C without additional dependencies. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPLv2.1 or later</code></a></li>
|
||
<li><a href="https://github.com/rafael-santiago/pig">pig</a> - Linux
|
||
packet crafting tool. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GPL2</code></a></li>
|
||
<li><a href="https://github.com/awslabs/s2n">s2n</a> - C99
|
||
implementation of the TLS/SSL protocols, designed to be simple, fast and
|
||
with security as a priority. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://github.com/silentbicycle/socket99">socket99</a> -
|
||
C99 wrapper for the BSD sockets API. <a
|
||
href="https://directory.fsf.org/wiki/License:ISC"><code>ISC</code></a></li>
|
||
<li><a href="https://tox.chat/">Tox</a> - Communication platform,
|
||
designed to be a Skype-killer. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
<li><a href="https://github.com/sinemetu1/twitc">twitc</a> - Mini C
|
||
library for interacting with the Twitter OAuth API. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/librg/librg">librg</a> - Library for
|
||
building simple and elegant cross-platform mmo client-server solutions.
|
||
<a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://github.com/rxi/dyad">dyad</a> - Asynchronous
|
||
networking library. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/h2o/h2o/">h2o</a> - Optimized HTTP/1,
|
||
HTTP/2 high performance server/library. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h3 id="web-frameworks">Web Frameworks</h3>
|
||
<ul>
|
||
<li><a href="https://balde.rgm.io/">balde</a> - Microframework for C
|
||
based on GLib. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPLv2.1</code></a></li>
|
||
<li><a href="https://www.coralbits.com/libonion/">onion</a> - C library
|
||
to create simple HTTP servers and Web Applications. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://kore.io/">kore</a> - Easy to use, scalable and
|
||
secure web application framework for writing web APIs in C.</li>
|
||
<li><a href="http://www.koanlogic.com/klone/">klone</a> - KLone is a
|
||
fully-featured, multiplatform, web application development
|
||
framework.</li>
|
||
<li><a href="http://duda.io/">duda</a> - Duda I/O is an event-driven and
|
||
high performant web services framework written in C. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
</ul>
|
||
<h2 id="numerical">Numerical</h2>
|
||
<ul>
|
||
<li><a href="http://apophenia.info/">apophenia</a> - Library for
|
||
statistical and scientific computing. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://math-atlas.sourceforge.net/">ATLAS</a> -
|
||
Automatically Tuned Linear Algebra Software. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://www.netlib.org/blas/">BLAS</a> - Basic Linear
|
||
Algebra Subprograms; a set of routines that provide vector and matrix
|
||
operations. <a
|
||
href="http://www.netlib.org/blas/#_licensing"><code>BLAS license</code></a></li>
|
||
<li><a
|
||
href="https://people.sc.fsu.edu/~jburkardt/c_src/cdflib/cdflib.html">CDFLIB</a>
|
||
- 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)</li>
|
||
<li><a href="https://scientificc.github.io/cmathl/">cmathl</a> - 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.
|
||
<a
|
||
href="https://github.com/ScientificC/cmathl/blob/master/LICENSE"><code>MIT</code></a></li>
|
||
<li><a href="http://www.feynarts.de/cuba/">Cuba</a> - Library for
|
||
multidimensional numerical integration. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPLv3</code></a></li>
|
||
<li><a href="http://www.fftw.org/">FFTW</a> - The Fastest Fourier
|
||
Transform in the West; a highly-optimized fast Fourier transform
|
||
routine. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later</code></a></li>
|
||
<li><a href="http://flintlib.org/">FLINT</a> - Fast Library for Number
|
||
Theory; a library supporting arithmetic with numbers, polynomials, power
|
||
series and matrices, among others. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/glpk/">GLPK</a> - GNU Linear
|
||
Programming Kit; a package designed for solving large-scale linear
|
||
programming, mixed integer programming and other related problems. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://gmplib.org/">GMP</a> - GNU Multple Precision
|
||
Arithmetic Library; a library for arbitrary-precision arithmetic. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a>
|
||
and <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPLv3</code></a></li>
|
||
<li><a href="http://www.multiprecision.org/mpc/">GNU MPC</a> - Library
|
||
for complex number arithmetic. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3 or later</code></a></li>
|
||
<li><a href="https://www.mpfr.org/index.html">GNU MPFR</a> - Library for
|
||
arbitrary-precision floating-point arithmetic. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3 or later</code></a>
|
||
or <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1 or later (until version 2.4.x)</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/mpria/">GNU MPRIA</a> -
|
||
Portable mathematics library for multi-precision rational interval
|
||
arithmetic. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="http://www.gnu.org/software/gsl/">GSL</a> - The GNU
|
||
Scientific Library; a sophisticated numerical library. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
<li><a href="https://igraph.org/">igraph</a> - Library for creating and
|
||
manipulating large graphs. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2</code></a></li>
|
||
<li><a href="https://sourceforge.net/projects/kissfft/">KISS FFT</a> -
|
||
Very simple fast Fourier transform library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://www.netlib.org/lapack/lapacke.html">LAPACKE</a> - C
|
||
interface to <a href="http://www.netlib.org/lapack/">LAPACK</a>. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://pari.math.u-bordeaux.fr/">PARI/GP</a> - Computer
|
||
algebra system for number theory; includes a compiler to C. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later</code></a></li>
|
||
<li><a href="https://www.mcs.anl.gov/petsc/">PETSc</a> - Suite of data
|
||
structures and routines for scalable parallel solution of scientific
|
||
applications modelled by partial differential equations. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a
|
||
href="https://people.sc.fsu.edu/~jburkardt/c_src/prob/prob.html">PROB</a>
|
||
- Library that handles various discrete and continuous probability
|
||
density functions. <a
|
||
href="https://people.sc.fsu.edu/~jburkardt/txt/gnu_lgpl.txt"><code>GNU LGPL3</code></a></li>
|
||
<li><a href="https://bitbucket.org/MDukhan/yeppp">Yeppp!</a> - Very
|
||
fast, SIMD-optimized mathematical library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
</ul>
|
||
<h2 id="parallel-programming">Parallel Programming</h2>
|
||
<ul>
|
||
<li><a href="http://repo.hu/projects/cchan/">cchan</a> - Small library
|
||
for channel constructs for inter-thread communication. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="http://concurrencykit.org/">ck</a> - Concurrency
|
||
primitives, safe memory reclamation mechanisms and non-blocking data
|
||
structures. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="http://libmill.org/">mill</a> - Go-style concurrency in C.
|
||
<a
|
||
href="https://directory.fsf.org/wiki/License:X11"><code>X11</code></a></li>
|
||
<li><a href="http://libdill.org/">libdill</a> - Structured concurrency
|
||
in C. <a
|
||
href="https://directory.fsf.org/wiki/License:X11"><code>X11</code></a></li>
|
||
<li><a href="http://www.mpich.org/">MPICH</a> - Another implementation
|
||
of MPI. <a
|
||
href="http://git.mpich.org/mpich.git/blob_plain/6aab201f58d71fc97f2c044d250389ba86ac1e3c:/COPYRIGHT"><code>MPICH licence</code></a></li>
|
||
<li><a href="https://www.openmp.org/">OpenMP</a> - Set of C pragmas
|
||
designed to allow for easy parallelization of code. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://github.com/open-mpi/ompi">OpenMPI</a> - Message
|
||
passing interface implementation. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/pth/">pth</a> - Portable
|
||
implementation for non-preemptive priority-based scheduling for multiple
|
||
threads of execution. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://en.wikipedia.org/wiki/POSIX_Threads">pthreads</a> -
|
||
The POSIX thread library.</li>
|
||
<li><a href="https://bitbucket.org/slepc/slepc">SLEPc</a> - Software
|
||
library for the solution of large, sparse eigenvalue problems on
|
||
parallel computers. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3</code></a></li>
|
||
<li><a href="https://tinycthread.github.io/">TinyCThread</a> - Portable,
|
||
small implementation of the C11 threads API. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
</ul>
|
||
<h2 id="parsers">Parsers</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/abiggerhammer/hammer">hammer</a> -
|
||
Parser combinators for binary formats. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://github.com/ndevilla/iniparser">iniparser</a> -
|
||
Parser for <code>.ini</code> files. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/madmurphy/libconfini">libconfini</a> -
|
||
Yet another INI parser. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://pyyaml.org/wiki/LibYAML">libYAML</a> - YAML 1.1
|
||
parser and emitter. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/orangeduck/mpc">mpc</a> - Parser
|
||
combinator library. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="https://github.com/vstakhov/libucl">libucl</a> - Universal
|
||
configuration library parser. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
</ul>
|
||
<h2 id="regex">Regex</h2>
|
||
<blockquote>
|
||
<p>“Some people, when confronted with a problem, think ‘I know, I’ll use
|
||
regular expressions’. Now they have two problems.” - Jamie Zawinski.</p>
|
||
</blockquote>
|
||
<ul>
|
||
<li><a href="http://www.pcre.org/">PCRE</a> - Implementation of regexes
|
||
identical to that of Perl 5. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a
|
||
href="https://github.com/nasciiboy/recursiveregexpraptor-4">regexp4</a>
|
||
- Simple and complete implementation of regular expressions with its own
|
||
sintax. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://github.com/cesanta/slre">SLRE</a> - Super Light
|
||
Regular Expression library; a very small implementation of a subset of
|
||
Perl regex syntax. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://github.com/openresty/sregex">sregex</a> -
|
||
Non-backtracking NFA/DFA-based Perl-compatible regex engine library. <a
|
||
href="https://opensource.org/licenses/BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://github.com/laurikari/tre/">TRE</a> -
|
||
POSIX-compliant, feature-full regex library. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
</ul>
|
||
<h2 id="serialization">Serialization</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/liteserver/binn">binn</a> - Binary
|
||
serialization format meant to be compact, fast and easy-to-use. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://github.com/jmckaskill/c-capnproto">c-capnproto</a>
|
||
- Implementation of the Cap’n Proto serialization protocol. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/camgunz/cmp">cmp</a> - Implementation of
|
||
the <a href="https://msgpack.org/">MessagePack</a> serialization
|
||
protocol. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a
|
||
href="http://avro.apache.org/docs/current/api/c/index.html#_introduction_to_avro_c">libavro</a>
|
||
- C implementation of the Avro data serialization system. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://github.com/ludocode/mpack">mpack</a> - Another
|
||
implementation of the <a href="https://msgpack.org/">MessagePack</a>
|
||
serialization protocol. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/liteserver/netstring-c">netstring-c</a>
|
||
- Netstring encoder and decoder. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="https://github.com/protobuf-c/protobuf-c">protobuf-c</a> -
|
||
Implementation of Google Protocol Buffer in C. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a
|
||
href="https://en.wikipedia.org/wiki/External_Data_Representation">xdr</a>
|
||
- External Data Representation; a standard for data serialization.</li>
|
||
</ul>
|
||
<p>Check also: <a href="#json">JSON</a>, <a href="#xml">XML</a></p>
|
||
<h2 id="source-code-collections">Source Code Collections</h2>
|
||
<p>This contains collections of small source code. If you want something
|
||
big and integrated, check the Frameworks section.</p>
|
||
<ul>
|
||
<li><a href="http://ccodearchive.net/">CCAN</a> - Modelled after Perl’s
|
||
CPAN, this is a big collection of C code that does stuff. The full list
|
||
is <a href="http://ccodearchive.net/list.html">here</a>.</li>
|
||
<li><a href="https://github.com/clibs/clib">clib</a> - Something of a
|
||
package manager for C. Comes with a <a
|
||
href="https://github.com/clibs/clib/wiki/Packages">bunch of libraries of
|
||
its own</a>. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/gnulib/">gnulib</a> -
|
||
Collection of common GNU code.</li>
|
||
<li><a href="http://www.fefe.de/djb/">libdjb</a> - Collection of
|
||
libraries doing various things. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>(Apparently) Public Domain</code></a></li>
|
||
</ul>
|
||
<h2 id="standard-libraries">Standard Libraries</h2>
|
||
<p>This contains standard C libraries.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/aosp-mirror/platform_bionic">Bionic</a>
|
||
- Google’s C standard library, developed for Android. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://www.fefe.de/dietlibc/">dietlibc</a> - C standard
|
||
library designed for the smallest possible binaries. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://www.gnu.org/software/libc/">glibc</a> - The GNU C
|
||
Library; an implementation of the C standard library. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="http://www.musl-libc.org/">musl</a> - Standard C library,
|
||
compatible with POSIX 2008 and C11. Designed for static linking. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
</ul>
|
||
<h2 id="string-manipulation">String Manipulation</h2>
|
||
<ul>
|
||
<li><a href="http://bstring.sourceforge.net/">bstrlib</a> - The Better
|
||
String Library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a>
|
||
and <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://site.icu-project.org/">ICU</a> - International
|
||
Components for Unicode; a library for Unicode support. <a
|
||
href="http://source.icu-project.org/repos/icu/icu/tags/latest/LICENSE"><code>ICU license</code></a></li>
|
||
<li><a
|
||
href="https://www.gnu.org/software/libunistring/">libunistring</a> -
|
||
Library for manipulating Unicode strings in C. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/libiconv/">libgiconv</a> -
|
||
Text conversion library. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1 (library)</code></a>
|
||
or <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 (*iconv* program)</code></a></li>
|
||
<li><a href="https://github.com/antirez/sds">SDS</a> - 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 <a
|
||
href="https://github.com/clibs/clib">clib</a>. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="http://ed-von-schleck.github.io/shoco/">shoco</a> -
|
||
Compressor for small text strings. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/antirez/smaz">smaz</a> - Efficient
|
||
string compression library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://github.com/sheredom/utf8.h">utf8.h</a> - Single
|
||
header utf8 string functions. <a
|
||
href="https://unlicense.org/"><code>Unlicense</code></a></li>
|
||
<li><a href="https://github.com/JuliaStrings/utf8proc">utf8proc</a> -
|
||
Small, clean library for processing UTF-8 Unicode data. <a
|
||
href="https://github.com/JuliaStrings/utf8proc/blob/master/LICENSE.md"><code>License</code></a></li>
|
||
</ul>
|
||
<h2 id="testing">Testing</h2>
|
||
<ul>
|
||
<li><a href="http://users.jyu.fi/~sapekiis/cheat/">CHEAT</a> - Very
|
||
simple unit testing framework. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="https://libcheck.github.io/check/">Check</a> - Unit testing
|
||
framework for C. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.1</code></a></li>
|
||
<li><a href="http://www.throwtheswitch.org/">CMock</a> - Mock/stub
|
||
generator for C. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://cmocka.org/">cmocka</a> - Unit testing framework
|
||
with support for mock objects. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://criterion.readthedocs.io/en/master/">Criterion</a>
|
||
- KISS, non-intrusive C test framework. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="http://cunit.sourceforge.net/">CUnit</a> - Another unit
|
||
testing framework for C. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPL2.0</code></a></li>
|
||
<li><a href="https://github.com/rafael-santiago/cutest">Cutest</a> -
|
||
Library for unit testing with memory leak detection (Linux, freeBSD and
|
||
Windows). <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GPL2</code></a></li>
|
||
<li><a href="https://github.com/siu/minunit">minunit</a> - Minimal unit
|
||
testing framework for C. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://nemequ.github.io/munit/">munit</a> - Small but
|
||
full-featured unit testing framework for C with no dependencies. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
<li><a href="http://www.throwtheswitch.org/">Unity</a> - Simple unit
|
||
testing framework for C. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
</ul>
|
||
<h2 id="text-editor-extensions">Text Editor Extensions</h2>
|
||
<p>While practically any decent programmer’s text editor supports C,
|
||
there are some extensions that make it more pleasant. This is
|
||
categorized by editor.</p>
|
||
<h3 id="atom">Atom</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/AtomLinter/linter-clang">linter-clang</a> -
|
||
Lint C code in Atom, using Clang. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/hebaishi/linter-gcc">linter-gcc</a> -
|
||
Lint C code in Atom, using GCC. <a
|
||
href="https://raw.githubusercontent.com/atom/atom/master/LICENSE.md"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h3 id="emacs">Emacs</h3>
|
||
<ul>
|
||
<li><a href="http://cedet.sourceforge.net/">CEDET</a> - Collection of
|
||
Emacs Development Environment Tools; designed to provide IDE-like
|
||
features to Emacs. Built-in. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://github.com/flycheck/flycheck">Flycheck</a> - Modern
|
||
syntax checking. For C, it can use either GCC or Clang as a back-end. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://github.com/joaotavora/yasnippet">Yasnippet</a> -
|
||
Template system, with C templates for common code snippets. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
</ul>
|
||
<h3 id="vim">Vim</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/vim-syntastic/syntastic">Syntastic</a> -
|
||
Syntax checking and linting. <a
|
||
href="https://github.com/vim-syntastic/syntastic/blob/master/LICENCE"><code>Do What The Fuck You Want To license</code></a></li>
|
||
<li><a href="http://valloric.github.io/YouCompleteMe/">YouCompleteMe</a>
|
||
- Code completion engine for Vim. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
</ul>
|
||
<h2 id="tools">Tools</h2>
|
||
<p>This is a list of useful programs to help you write and debug C code
|
||
which are <em>not</em> editors, libraries or compilers.</p>
|
||
<ul>
|
||
<li><a href="http://astyle.sourceforge.net/">Artistic Style</a> - Fast
|
||
and small automatic source code formatter that supports C. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3</code></a></li>
|
||
<li><a href="https://github.com/google/sanitizers">address-sanitizer</a>
|
||
- Fast memory error detector. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://biicode.github.io/biicode/">biicode</a> - Modern
|
||
dependency manager for C. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/ryanmjacobs/c">c</a> - Compile and
|
||
execute C “scripts” in one go on the command line. Also has shebang
|
||
support. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/RhysU/c99sh">c99sh</a> - Run C files
|
||
using hash-bang. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="http://www.cprover.org/cbmc/">CBMC</a> - C Bounded Model
|
||
Checker; a tool for verification of array bounds, pointer safety and
|
||
user-specified assertions. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-4-Clause"><code>Original BSD</code></a></li>
|
||
<li><a href="https://cdecl.org/">cdecl</a> - Online service to translate
|
||
C declarations into English and vice versa. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="https://www.flourish.org/cinclude2dot/">cinclude2dot</a> -
|
||
Graphs include dependencies in a C project using Graphviz. <a
|
||
href="https://directory.fsf.org/wiki/Cinclude2dot#tab=Details"><code>Any GNU GPL version (due to underspecification in the file)</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/complexity/">Complexity</a> -
|
||
Tool for measuring the complexity of C source code. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://www.spinellis.gr/cscout/">CScout</a> - Source code
|
||
analyzer and refactoring browser for collections of C programs. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/ddd/ddd.html">DDD</a> -
|
||
Graphical front-end for a range of command-line debuggers. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="http://www.gnu.org/software/gdb/">GDB</a> - The GNU Project
|
||
debugger; a debugger for C. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://glade.gnome.org/">Glade</a> - RAD tool to enable
|
||
quick development of GTK+ GUIs. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://gmsl.sourceforge.io/">GMSL</a> - GNU Make Standard
|
||
Library; a collection of additional functionality for GNU Make. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/global/">GNU Global</a> -
|
||
Source code tagging tool which works with C. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
<li><a href="http://www.gnu.org/software/binutils/">gprof</a> -
|
||
Performance analysis tool. Part of GNU binutils. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="http://www.andre-simon.de/index.php">Highlight</a> -
|
||
Converts source code to formatted text with nice highlighting. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
<li><a
|
||
href="https://github.com/include-what-you-use/include-what-you-use">include-what-you-use</a>
|
||
- Helps find unecessary inclusions and make suggestions for fixing them.
|
||
Based on LLVM/Clang (and only works with it). <a
|
||
href="https://directory.fsf.org/wiki/License:NCSA"><code>NCSA</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/indent/">indent</a> - Formats
|
||
C source code automatically to make it easier to read. Also converts
|
||
from one style of source to another. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPLv3 or later</code></a></li>
|
||
<li><a href="https://rr-project.org/">rr</a> - Debugger that records
|
||
non-deterministic executions to allow for deterministic debugging. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="http://gittup.org/tup/index.html">tup</a> - Very fast,
|
||
file-based, cross-platform build system. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://dotat.at/prog/unifdef/">unifdef</a> - Removes #ifdef
|
||
and #if directives with their delimited text without touching any other
|
||
part of the file. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a>
|
||
and <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD"><code>FreeBSD</code></a></li>
|
||
<li><a href="http://www.valgrind.org/">Valgrind</a> - Range of dynamic
|
||
analysis tools, including a leak checker. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
</ul>
|
||
<h2 id="utilities">Utilities</h2>
|
||
<p>This is a ‘catch-all’ category for anything that doesn’t fit well
|
||
anywhere else.</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/jeremyevans/ape_tag_libs/tree/master/c">ApeTagLibs</a>
|
||
- C library for working with APEv2 tags. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="http://sourceware.org/binutils/docs/bfd/">bfd</a> - Library
|
||
for manipulating binary object files. Part of GNU binutils. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://fakenmc.github.io/cf4ocl/">cf4ocl</a> - The C
|
||
Framework for OpenCL; a cross-platform object-oriented framework for
|
||
developing and benchmarking <a
|
||
href="https://www.khronos.org/opencl/">OpenCL</a> projects. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3 (library)</code></a>
|
||
or <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 (project code)</code></a></li>
|
||
<li><a
|
||
href="https://github.com/commonmark/commonmark-spec">CommonMark</a> - C
|
||
implementation of the CommonMark spec. <a
|
||
href="https://github.com/commonmark/commonmark-spec/blob/master/LICENSE"><code>Various Licenses</code></a></li>
|
||
<li><a
|
||
href="https://github.com/ThrowTheSwitch/CException">CException</a> - C
|
||
implementation of exceptions. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/docopt/docopt.c">docopt.c</a> - C
|
||
implementation of a command-line option parser. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="http://www.dyncall.org/">dyncall</a> - Another foreign
|
||
function interface library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="http://leenissen.dk/fann/wp/">FANN</a> - Fast Artifical
|
||
Neural Network library; an implementation of neural networks. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://pp.ipd.kit.edu/firm/">Firm</a> - 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. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPLv2.1</code></a></li>
|
||
<li><a href="https://github.com/codeplea/genann">Genann</a> - Simple
|
||
neural network library in C. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>Zlib</code></a></li>
|
||
<li><a href="https://sourceforge.net/projects/gjrand/">gjrand</a> -
|
||
Library of random-number generation routines. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a>
|
||
or <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPLv3</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/freeipmi/index.html">GNU
|
||
FreeIPMI</a> - In-band and out-of-band IPMI implementation. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/gperf/">GNU gperf</a> -
|
||
Perfect hash function generator, given a list of strings. Outputs C
|
||
code. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/libffcall/">GNU Libffcall</a>
|
||
- Collection of libraries for building foreign function interfaces. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://github.com/gperftools/gperftools">gperftools</a> -
|
||
Collection of utilities for measuring and improving performance. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a
|
||
href="https://github.com/adamierymenko/huffandpuff">huffandpuff</a> -
|
||
Minimal Huffman encoder and decoder. <a
|
||
href="https://creativecommons.org/share-your-work/public-domain/"><code>Public Domain</code></a></li>
|
||
<li><a href="https://github.com/jtsiomb/kdtree">kdtree</a> - Simple
|
||
library for working with KD-trees. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="http://kitsune-dsu.com/">Kitsune</a> - Efficient,
|
||
general-purpose framework for dynamic software updating. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3 or later</code></a></li>
|
||
<li><a href="http://adtinfo.org/libavl.html/index.html">libavl</a> -
|
||
Library containing a range of self-balancing binary trees. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://github.com/mongodb/libbson">libbson</a> - BSON
|
||
utility library. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="http://libcello.org/">libCello</a> - Library introducing
|
||
higher-level programming to C. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD-3-Clause"><code>3-clause BSD</code></a></li>
|
||
<li><a href="https://github.com/libffi/libffi">libffi</a> - Portable
|
||
foreign-function interface library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://libgit2.org/">libgit2</a> - Pure C implementation
|
||
of Git. <a
|
||
href="https://github.com/libgit2/libgit2/blob/master/COPYING"><code>GNU GPL2 only, with a linking exception</code></a></li>
|
||
<li><a
|
||
href="https://github.com/libimobiledevice/libimobiledevice">libimobiledevice</a>
|
||
- Cross-platform protocol library to communicate with iThings. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><code>GNU LGPLv2.1 or later (library)</code></a>
|
||
or <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1 or later (tools)</code></a></li>
|
||
<li><a href="https://github.com/nfc-tools/libnfc">libnfc</a> -
|
||
Platform-independent Near-Field Communication library. <a
|
||
href="http://www.gnu.org/licenses/lgpl-3.0.html"><code>GNU LGPL3</code></a></li>
|
||
<li><a href="https://github.com/facebookarchive/libphenom">libPhenom</a>
|
||
- Deprecated, here for archival purposes. Eventing framework for
|
||
building high-scalability and high-performance systems. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/ncurses/">ncurses</a> -
|
||
Coloured terminal UI library. <a
|
||
href="http://www.gnu.org/licenses/gpl-3.0.html"><code>GNU GPL3 or later</code></a></li>
|
||
<li><a href="https://github.com/riolet/WAFer">nope.c</a> -
|
||
C-language-based, ultra-light software platform for scalable server-side
|
||
and networking applications (think node.js for C programmers). <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://github.com/cloudwu/pbc">pbc</a> - Protocol buffers
|
||
library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/alanxz/rabbitmq-c">rabbitmq-c</a> -
|
||
Client library for <a href="https://www.rabbitmq.com/">RabbitMQ</a>. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="http://www.colm.net/open-source/ragel/">Ragel</a> - DSL for
|
||
state machines that compiles to C. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="https://github.com/codeplea/tinyexpr">Tinyexpr</a> - Tiny
|
||
recursive-descent parser, compiler and evaluation engine for simple
|
||
mathematical expressions. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib"><code>zlib</code></a></li>
|
||
<li><a href="http://troydhanson.github.io/uthash/">uthash</a> - Hash
|
||
table implementation, allowing existing structures to be stored in a
|
||
hash table easily. <a
|
||
href="http://troydhanson.github.io/uthash/license.html"><code>1-clause BSD</code></a></li>
|
||
<li><a href="https://github.com/google/cpu_features">cpu_features</a> -
|
||
A cross platform C99 library to get cpu features at runtime. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://github.com/google/pblog">pblog</a> - Small, low
|
||
overhead, structured logging library intended for logging formware
|
||
events.<a
|
||
href="https://directory.fsf.org/wiki/License:Apache-2.0"><code>Apache 2.0</code></a></li>
|
||
<li><a href="https://github.com/WolfgangSt/libelf">libelf</a> - ELF
|
||
object file access library in C. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"><code>GNU GPL2.1</code></a></li>
|
||
<li><a href="http://mcpp.sourceforge.net/">mcpp</a> - Portable C
|
||
preprocessor. <a
|
||
href="https://opensource.org/licenses/BSD-2-Clause"><code>2-clause BSD</code></a></li>
|
||
<li><a href="https://libusb.info/">libusb</a> - Generic access to USB
|
||
devices. <a
|
||
href="https://github.com/libusb/libusb/blob/master/COPYING"><code>LGPL2.1</code></a></li>
|
||
<li><a
|
||
href="https://www.alsa-project.org/main/index.php/Main_Page">alsa-lib</a>
|
||
- Userspace library to interact with ALSA. <a
|
||
href="https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html"><code>LGPL2.1</code></a></li>
|
||
<li><a href="https://github.com/aquynh/capstone">Capstone</a> -
|
||
Dissasembly/disassembler framework. <a
|
||
href="https://github.com/aquynh/capstone/blob/master/LICENSE.TXT"><code>BSD 3-clause</code></a></li>
|
||
</ul>
|
||
<h2 id="xml">XML</h2>
|
||
<blockquote>
|
||
<p>“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</p>
|
||
</blockquote>
|
||
<ul>
|
||
<li><a href="http://www.libexpat.org/">Expat</a> - Stream-oriented XML
|
||
parser. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="http://xmlsoft.org/">libxml2</a> - Standards-compliant,
|
||
portable XML parser. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat"><code>Expat</code></a></li>
|
||
<li><a href="https://github.com/michaelrsweet/mxml">mini-xml</a> - Small
|
||
XML reading and writing library. No dependencies aside from C standard
|
||
library. <a
|
||
href="https://github.com/michaelrsweet/mxml/blob/master/LICENSE"><code>Apache 2.0 with exceptions</code></a></li>
|
||
</ul>
|
||
<p><a href="https://github.com/kozross/awesome-c">c.md Github</a></p>
|