4

我正在按照教程在 Windows 上使用 SQLCipher 编译 SQLite。我对编译的先决条件感到困惑。我发现我需要安装以下来编译它:

  1. OpenSSL
  2. 明威
  3. 活动状态 Perl
  4. TclTk / tclsh
  5. MSYS
  6. 视觉工作室
  7. 赛格温

其中,我只安装了 Visual Studio 2008。我正在使用 Windows 7。

在 Windows 上使用 SQLCipher 编译 SQLite 的确切先决条件是什么?

4

2 回答 2

5

从快速查看来看,SQLCipher 似乎是作为 SQLite 源 + 修改的检出分发的 - 这是多文件版本而不是“合并”。因此,您需要一个能够构建 SQLite 源的环境,这意味着一堆 unixy 应用程序。

就个人而言,我会在 SQLCipher 源档案和它包含的 SQLite 版本之间做一个差异(从 VERSION 文件来看,这似乎是 SQLCipher 1.8.2 的 SQLite 3.7.2)——这应该给出一个想法,如果任何,都对源 SQLite 文件以及特定于 SQLCipher 的列表文件执行。

为避免手动构建 OpenSSL 的麻烦,您可以获取预构建版本,从而摆脱 Perl 依赖项(iirc OpenSSL 使用 Visual C++ 构建良好,因此 MingW 不应成为依赖项)。

如果SQLCipher 作者没有故意将他的特定代码部分与 SQLite 分离的工作变得棘手(他可能有,从销售 win32 二进制文件中赚取一些钱),您可以接受他的更改并结合SQLite 合并版本和预构建的 OpenSSL 二进制文件,它们应该可以非常容易地插入到 Visual Studio 解决方案中。

当然,这意味着如果你想升级到更新版本的 SQLCipher,你必须完成提取步骤,但这可能是值得的,除非你真的想安装一个 cygwin 开发环境以便能够构建这个单一的库。

或者,您可以在 *u*x 机器(无论是 linux、*BSD 还是 Mac OS X shell)上执行 SQLCipher的配置步骤,因为编译步骤不需要所有时髦的工具。

更新:

我检查了 SQLite 的(版本 3.7.2)[http://www.sqlite.org/src/info/42537b6056] 并对 SQLCipher 1.1.8 发行版进行了比较,提取似乎是一项非常合理的任务修改部分:

Makefile.in - 为新的加密文件添加了引用。
tool/mksqlite3c.tcl:为新的加密文件添加了参考。
src/pragma.c - 添加一个块,标记为 /** BEGIN_CRYPTO **/
src/pager.c - 添加一个块,标记为 /** BEGIN_CRYPTO **/
src/crypto.h - 新文件。
src/crypto.c - 新文件。

此外,仅仅为了获得 AES 加密支持而依赖 OpenSSL 似乎有点矫枉过正——基于 SQLCipher 构建新的东西以使用专用(并且更小)的 AES 包会更好。

于 2010-12-04T11:04:11.773 回答
3

在 Windows 上编译 SQLCipher 所需的最小设置是:

  1. OpenSSL,源代码或二进制文件
  2. 表单 Perl - 可选,仅当您构建 OpenSSL 时才需要
  3. MinGW / MSYS - 需要配置 SQLCipher
  4. Tcl - SQLite 构建系统构建合并代码所需的
  5. Visual Studio - 构建您的项目

使用线程中的步骤,您可以直接创建 DLL 或生成合并以包含在您的项目中。

如果您想节省所有这些步骤和时间,您还可以从网站http://sqlcipher.net/downloads获得预编译的 SQLCipher windows 二进制文件。这些二元销售是互惠互利的,因为它们可以帮助您更快地工作,并且有助于支持项目。

于 2010-12-09T15:03:35.977 回答