# Notes On Compiling SQLite On Windows 11
Below are step-by-step instructions on how to build SQLite from
-canonical source on a new Windows 11 PC, as of 2024-10-09.
+canonical source on a new Windows 11 PC, as of 2025-10-31.
See [](./compile-for-unix.md) for a similar guide for unix-like
systems, including MacOS.
application to your task bar, as you will use it a lot. Bring up
an instance of this command prompt and do all of the subsequent steps
in that "x64 Native Tools" command prompt. (Or use "x86" if you want
- a 32-bit build.) The subsequent steps will not work in a vanilla
+ a 32-bit build. Or use "ARM64" if you want to do a build for Windows
+ on ARM.) The subsequent steps will not work in a vanilla
DOS prompt. Nor will they work in PowerShell.
3. *(Optional):* Install TCL development libraries.
The command the developers use for building the deliverable DLL on the
[download page](https://sqlite.org/download.html) is as follows:
-> ~~~~
-nmake /f Makefile.msc sqlite3.dll USE_NATIVE_LIBPATHS=1 "OPTS=-DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_ENABLE_SESSION=1 -DSQLITE_ENABLE_PREUPDATE_HOOK=1 -DSQLITE_ENABLE_SERIALIZE=1 -DSQLITE_ENABLE_MATH_FUNCTIONS=1"
-~~~~
+> nmake /f Makefile.msc sqlite3.dll USE_NATIVE_LIBPATHS=1 "OPTS=-DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_JSON1=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_ENABLE_SESSION=1 -DSQLITE_ENABLE_PREUPDATE_HOOK=1 -DSQLITE_ENABLE_SERIALIZE=1 -DSQLITE_ENABLE_MATH_FUNCTIONS=1"
That command generates both the sqlite3.dll and sqlite3.def files. The same
command works for both 32-bit and 64-bit builds.
is an example. You can build as described above, and then
enter:
-> ~~~~
-nmake /f Makefile.msc sqlite3_analyzer.exe
-~~~~
+> nmake /f Makefile.msc sqlite3_analyzer.exe
And you will end up with a working executable. However, that executable
will depend on having the "tcl98.dll" library somewhere on your %PATH%.
5. CD into your SQLite source code directory and build the desired
utility program, but add the following extra argument to the
nmake command line:
- <blockquote><pre>
- STATICALLY_LINK_TCL=1
- </pre></blockquote>
+ <blockquote><pre>STATICALLY_LINK_TCL=1</pre></blockquote>
<p>So, for example, to build a statically linked version of
sqlite3_analyzer.exe, you might type:
- <blockquote><pre>
- nmake /f Makefile.msc STATICALLY_LINK_TCL=1 sqlite3_analyzer.exe
- </pre></blockquote>
+ <blockquote><pre>nmake /f Makefile.msc STATICALLY_LINK_TCL=1 sqlite3_analyzer.exe</pre></blockquote>
6. After your executable is built, you can verify that it does not
depend on the TCL DLL by running:
- <blockquote><pre>
- dumpbin /dependents sqlite3_analyzer.exe
- </pre></blockquote>
+ <blockquote><pre>dumpbin /dependents sqlite3_analyzer.exe</pre></blockquote>
-C Detect\ssome\scases\sof\sambiguous\scolumn\sreferences\sin\sUSING\sclauses\sthat\scan\scome\sup\swith\snested\sjoins.
-D 2025-10-31T16:07:31.438
+C Updates\sto\sthe\scompile-for-windows.md\sdocument.\s\sNo\schanges\sto\scode.
+D 2025-10-31T17:45:59.174
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F contrib/sqlitecon.tcl eb4c6578e08dd353263958da0dc620f8400b869a50d06e271ab0be85a51a08d3
F doc/F2FS.txt c1d4a0ae9711cfe0e1d8b019d154f1c29e0d3abfe820787ba1e9ed7691160fcd
F doc/compile-for-unix.md c9dce1ddd4bf0d25efccc5c63eb047e78c01ce06a6ff29c73e0a8af4a0f4adbc
-F doc/compile-for-windows.md 5141661e783c9ca9e3fd30e813345898712f5c311d71316f183db87038fa28a6
+F doc/compile-for-windows.md f9e74d74da88f384edd5809f825035e071608f00f7f39c0e448df7b3982f979c
F doc/json-enhancements.md e356fc834781f1f1aa22ee300027a270b2c960122468499bf347bb123ce1ea4f
F doc/jsonb.md acd77fc3a709f51242655ad7803510c886aa8304202fa9cf2abc5f5c4e9d7ae5
F doc/lemon.html 89ea833a6f71773ab1a9063fbb7fb9b32147bc0b1057b53ecab94a3b30c0aef5
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 5afd815ada94d55c9c56efe339235d23ffbf1fb64511a5e460927a2c8deaaaf0
-R 9fce4c06730bd171aafe337c923d19bb
-U dan
-Z 084dcba51f165497628862393726ae33
+P 38c993c8b7137d6d5623d387292639634297c17da11befec9029f12a16a472f8
+R 3cb9ce706551ac114dc5d72e5b28db0b
+U drh
+Z 24219984f40a8b569cf830304fbcd4ea
# Remove this line to create a well-formed Fossil manifest.