Small. Fast. Reliable.
Choose any three.
There are 63 files of C code that make up the SQLite core (as of version 3.3.18). 57 of these are "source" files in the sense that they are stored in the configuration management system and are maintained directly. The other 6 core C files are generated automatically during the compilation process. Of the 63 code files, 47 are C code and 16 are C header files. See the SqliteBuildProcess page for additional information.

Beginning in SQLite version 3.3.14, there is a makefile target that builds the "amalgamation". The amalgamation is a single C code file that contains all C code for the core SQLite library. The name of the amalgamation is "sqlite3.c". This file contains about 65K lines of code (41K if you omit blank lines and comments) and is over 2MB in size.

The amalgamation contains everything you need to integrate SQLite into a larger project. Just copy the amalgamation into your source directory and compile it together with your other source files. You may also want to make use of the "sqlite3.h" header file that defines the programming API for SQLite. The sqlite3.h header file is available separately. The sqlite3.h file is also contained within the amalgamation, in the first couple of thousand lines. So if you have a copy of sqlite3.c but cannot seem to locate sqlite3.h, you can always regenerate the sqlite3.h by copying and pasting from the amalgamation.

In addition to making SQLite easier to incorporate into other projects, the amalgamation also makes it run faster. Many compilers are able to do additional optimizations on code when it is contained with in a single translation unit such as it is in the amalgamation. We have measured performance improvements of between 5 and 10% when we use the amalgamation to compile SQLite rather than individual source files.

Beginning with SQLite version 3.4.0, the amalgamation together with the sqlite3.h header file are available for download from the download page as a file named sqlite-amalgamation-X_X_X.zip where the X's are replaced by the appropriate version number.