我正在关注this教程,在Windows上使用SQLCipher编译SQLite。我对编译的先决条件感到困惑。我发现我需要安装以下代码来编译它:
在上述所有内容中,我只安装了Visual Studio 2008。我正在使用Windows 7。
在Windows上使用SQLCipher编译SQLite的确切先决条件是什么?
答案 0 :(得分:4)
似乎SQLCipher作为SQLite源代码+修改的结帐分发,通过快速查看来判断 - 这是多文件版本而不是“合并”。因此,您需要一个能够构建SQLite源的环境,这意味着一堆unixy应用程序。
就个人而言,我会在SQLCipher源文件和它包含的SQLite版本之间做差异(对于SQLCipher 1.8.2,似乎是SQLite 3.7.2,根据VERSION文件判断) - 这应该给出一个想法对源SQLite文件以及特定于SQLCipher的列表文件进行修改(如果有的话)。
为了避免手动构建OpenSSL的麻烦,您可以获取预先构建的版本,这会使您厌倦Perl依赖项(使用Visual C ++构建iirc OpenSSL,因此MingW不应该是依赖项)。
如果,SQLCipher作者没有故意将他的特定代码部分从SQLite中分离出来(他可能拥有,通过销售win32二进制文件赚钱),你就是能够接受他的更改,并结合SQLite合并版本和预构建的OpenSSL二进制文件,这将使Visual Studio解决方案中的一个非常简单的插入。
当然这意味着如果你想升级到更新版本的SQLCipher,你将不得不经历提取步骤,但它可能是值得的,除非你真的想要安装一个cygwin开发环境能够构建这个单独的库。
或者,您可以在* u * x框(无论是linux,* BSD还是Mac OS X shell)上执行SQLCipher的 configure 步骤,因为 compile 步骤不应该要求所有时髦的工具。
我检查了SQLite的[版本3.7.2] [http://www.sqlite.org/src/info/42537b6056]并针对SQLCipher 1.1.8发行版运行了一个差异,看起来非常合理提取修改部分的任务:
Makefile.in - references added for the new crypto files. tool/mksqlite3c.tcl: references added for the new crypto files. src/pragma.c - one added block, marked /** BEGIN_CRYPTO **/ src/pager.c - one added block, marked /** BEGIN_CRYPTO **/ src/crypto.h - new file. src/crypto.c - new file.
此外,仅仅为了获得AES加密支持而依赖OpenSSL似乎相当过度 - 基于SQLCipher构建新的东西以使用专用(并且更小)的AES包会更好。
答案 1 :(得分:4)
在Windows上编译SQLCipher所需的最小设置是:
使用线程中的步骤,您可以直接创建DLL或生成合并以包含在项目中。
如果您想保存所有这些步骤和时间,只需支付少量费用,您还可以从http://sqlcipher.net/downloads的网站获得预编译的SQLCipher Windows二进制文件。这些二进制销售是互利的,因为它们可以帮助您更快地开展工作,并且它们有助于支持项目。