2010-12-04 146 views
3

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

  1. OpenSSL的
  2. MinGW的
  3. 的ActiveState Perl的
  4. TclTk/tclsh的
  5. MSYS
  6. 的Visual Studio
  7. Cygwin的

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

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

回答

4

需要编译SQLCipher在窗口的最小设置是:

  1. OpenSSL的,无论是在源代码或二进制
  2. 形式的Perl - 可选,只有当你建立的OpenSSL
  3. 需要
  4. 的MinGW/MSYS - 需要配置SQLCipher
  5. Tcl - 由SQLite构建系统建立合并代码所需的
  6. Visual Studio - 构建您的项目

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

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

3

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

个人而言,我会在SQLCipher源存档和它包含的SQLite版本(对于SQLCipher 1.8.2来看,SQLite 3.7.2,由VERSION文件判断)之间做差异 - 这应该给出一个想法对源SQLite文件进行哪些修改(如果有),以及SQLCipher特有的列表文件。

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

如果 SQLCipher作者并没有有目的地将他特定的代码部分从SQLite中分离出来(他可能会从销售win32二进制文件中获得一些钱),你可以采取他的改变,并结合SQLite合并版本和预编译的OpenSSL二进制文件,这应该使Visual Studio解决方案变得非常简单。

当然,这意味着如果您想升级到较新版本的SQLCipher,则需要经过提取步骤,但它可能是值得的,除非您真的想安装一个cygwin开发环境能够建立这个单一的图书馆。

或者,你可能能够做一个* U * X盒SQLCipher的配置步骤(这是否是Linux操作系统,* BSD或Mac OS X的外壳),因为编译一步不该” t需要所有时髦的工具。

UPDATE:

我签出(版本3.7.2)[http://www.sqlite.org/src/info/42537b6056]的SQLite并抵靠SQLCipher 1.1.8分布跑一个diff,它似乎是一个非常合理的任务来提取改变的部分:

 
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.

而且,它似乎相当矫枉过正采取OpenSSL的依赖只是为了让AES加密支持 - 构建基于SQLCipher新的东西要使用专用的(以及更小的)AES包更好。

+0

我读了某处(http://zetetic.net/blog/2009/12/28/improvements-to-sqlcipher---cross-platform-sqlite-encryption/),有Visual Studio项目编译此代码。有没有人有vs.net解决方案? – 2010-12-04 11:43:44

+0

也http://groups.google.com/group/sqlcipher/browse_thread/thread/55c6296b56bf4533/0781135c6cc47dc7?#0781135c6cc47dc7 – 2010-12-04 11:45:33