Win10编译SqlCipher步骤

Posted xiaoxi666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win10编译SqlCipher步骤相关的知识,希望对你有一定的参考价值。

准备工作

  • Visual Studio 2015,其他版本未验证,估计问题不大
  • ActiveState ActivePerl,用于编译OpenSSL
  • Mingw,在官网下载minimum installer安装即可
  • nasm,汇编代码运行环境,官网下载安装即可
  • ActiveState ActiveTcl,需要用到tclsh工具

    以上软件请预先安装,注意部分软件安装后需要手动添加环境变量

  • OpenSSL源码,在官网下载即可
  • SqlCipher源码,在官网下载即可

安装OpenSSL

  1. 管理员权限打开VS2015的命令行窗口,并利用cd /d XXX命令切换到OpenSSL目录下

  2. 执行以下命令:

    • perl Configure VC-WIN32
    • nmake
    • nmake test 如果配置成功,该步骤会输出All tests Successful
    • nmake install 正式安装命令,32位机器默认安装于C:\\Program Files (x86)\\OpenSSL文件夹
  3. 现在安装目录下生成了两个库文件:

    • 动态库文件libcrypto-1_1.dll(位于./bin目录下)
    • 静态库文件libcrypto.lib (位于./lib目录下)

编译SqlCipher

  1. 将上一步生成的两个库文件复制到SqlCipher主目录下
  2. 管理员权限运行C:\\mingw\\msys\\1.0\\msys.bat批处理文件,进入msys shell命令环境
  3. 利用命令cd /d XXX切换到SqlCipher目录
  4. 修改sqlite3.c文件,在文件的最开始部分添加以下代码:
    #define SQLITE_HAS_CODEC 1
    #define SQLITE_ENABLE_RTREE 1
    #define SQLITE_ENABLE_COLUMN_METADATA 1
    #define SQLITE_TEMP_STORE 2
    
  5. 继续修改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 ***/	
    
  6. 运行以下命令进行配置(注意这是一行):
    ./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"
    
  7. 执行命令:
    • make clean
    • make,生成可执行文件sqlcipher.exe
    • make dll,生成库文件sqlite3.dll

到目前为止,Sqlcipher源码就编译完成了。接下来就可以参考第一篇参考文章尽情使用该软件啦。

参考文章

How to compile SQLCipher for Windows Desktop.

用VS2015编译sqlcipher

本文写作时部分引用上述两篇文章,特此感谢。

以上是关于Win10编译SqlCipher步骤的主要内容,如果未能解决你的问题,请参考以下文章

编译SqlCipher_android源码

交叉编译sqlcipher

net.sqlcipher.database.SQLiteException: 文件不是数据库: , 编译时: select count(*) from sqlite_master

C++编译SQLite数据库以及如何使用加密数据库SQLCipher

sql server 2000 不兼容问题

ORMLite整合SQLCipher