准备工作
- Visual Studio 2015,其他版本未验证,估计问题不大
- ActiveState ActivePerl,用于编译OpenSSL
- Mingw,在官网下载minimum installer安装即可
- nasm,汇编代码运行环境,官网下载安装即可
- ActiveState ActiveTcl,需要用到tclsh工具
以上软件请预先安装,注意部分软件安装后需要手动添加环境变量
- OpenSSL源码,在官网下载即可
- SqlCipher源码,在官网下载即可
安装OpenSSL
-
管理员权限打开VS2015的命令行窗口,并利用
cd /d XXX
命令切换到OpenSSL目录下 -
执行以下命令:
perl Configure VC-WIN32
nmake
nmake test
如果配置成功,该步骤会输出All tests Successfulnmake install
正式安装命令,32位机器默认安装于C:Program Files (x86)OpenSSL文件夹
-
现在安装目录下生成了两个库文件:
- 动态库文件libcrypto-1_1.dll(位于./bin目录下)
- 静态库文件libcrypto.lib (位于./lib目录下)
编译SqlCipher
- 将上一步生成的两个库文件复制到SqlCipher主目录下
- 管理员权限运行C:mingwmsys1.0msys.bat批处理文件,进入msys shell命令环境
- 利用命令
cd /d XXX
切换到SqlCipher目录 - 修改sqlite3.c文件,在文件的最开始部分添加以下代码:
#define SQLITE_HAS_CODEC 1 #define SQLITE_ENABLE_RTREE 1 #define SQLITE_ENABLE_COLUMN_METADATA 1 #define SQLITE_TEMP_STORE 2
- 继续修改sqlite3.c文件,在文件的最后添加以下代码:
#include <sqlcipher/crypto.c> /*** SQLCIPHER ADDITION ***/ #include <sqlcipher/crypto_cc.c> /*** SQLCIPHER ADDITION ***/ #include <sqlcipher/crypto_impl.c> /*** SQLCIPHER ADDITION ***/ #include <sqlcipher/crypto_openssl.c> /*** SQLCIPHER ADDITION ***/ #include <sqlcipher/pager.c> /*** SQLCIPHER ADDITION ***/
- 运行以下命令进行配置(注意这是一行):
./configure --enable-tempstore=yes --with-crypto-lib=none --disable-tcl CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2 -DNOCRYPT -lcrypto -DSQLCIPHER_CRYPTO_OPENSSL -I/c/progra~2/OpenSSL/include /d/MySoftware/sqlcipher/sqlcipher-master/libcrypto.dll -L/d/MySoftware/sqlcipher/sqlcipher-master/ -static-libgcc" LDFLAGS="libcrypto.lib"
- 执行命令:
make clean
make
,生成可执行文件sqlcipher.exemake dll
,生成库文件sqlite3.dll
到目前为止,Sqlcipher源码就编译完成了。接下来就可以参考第一篇参考文章尽情使用该软件啦。
参考文章
本文写作时部分引用上述两篇文章,特此感谢。