准备工作

  • 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步骤的更多相关文章

  1. CentOS6-Linux内核编译 详细步骤

    CentOS6-Linux内核编译 详细步骤 背景 Win10用VMwareWorkstation搭的虚拟机 CentOS6.5,内核版本2.6.32-431.el6.x86_64 在该环境下升级至4 ...

  2. Ubuntu下编译SqlCipher以及解密微信数据库EnMicroMsg.db过程和坑

    wget https://codeload.github.com/sqlcipher/sqlcipher/zip/v3.4.2 ./configure --enable-tempstore=yes C ...

  3. Ubuntu安装 Alisql编译安装步骤:

    github地址: https://github.com/alibaba/AliSQL 一.直接git下载保存到本地: git clone https://github.com/alibaba/Ali ...

  4. Java文件手动编译执行步骤

    Java编译执行步骤: 1)将 Java 代码编写到扩展名为 .java 的文件中.2)通过 javac 命令对该 java 文件进行编译.3)通过 java 命令对生成的 class 文件进行运行. ...

  5. 用VS2015编译sqlcipher

    简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...

  6. android4.0浏览器在eclipse中编译的步骤

    工程源码: 注意: 如果下载已经修过的源码,只要进行3.4.8步骤就应该可以了. eclipse版本:adt-bundle-windows (Android Developer Tools Build ...

  7. How to compile and install NCAR Command Language on IBM PowerPC 64 --- NCL编译安装步骤

    作者:Sinsonglew 出处:http://www.cnblogs.com/sinsonglew 欢迎转载,也请保留这段声明.thanks :) 注记:NCL官方依赖安装包全集列表.官方源码编译指 ...

  8. Qt creator自定义编译运行步骤

    一直用Qt creator开发.无它,只是因为linux下C++ IDE选择不多.同时因为我抛弃了MFC,平时写个小工具还得靠Qt,正好一举两用. 用Qt creator开发一般的工程,是不用修改编译 ...

  9. VS2017编译SNMP++步骤记录

    1.下载地址:https://www.agentpp.com/download.html 三个都下 2.新建解决方案 TestSnmp 3.下载后解压到解决方案文件夹(注意,解压后的 snmp++的版 ...

随机推荐

  1. JQuery的deferred对象学习总结

    什么是deferred? 可以帮助我们按规定的顺序执行函数,比如说我们ajax请求数据之后,对dom进行数据填充,那我们就要先执行完ajax,拿到数据之后才能进行dom数据填充,所以这就是一个顺序执行 ...

  2. MLlib--PIC算法

    转载请标明出处http://www.cnblogs.com/haozhengfei/p/82c3ef86303321055eb10f7e100eb84b.html PIC算法   幂迭代聚类     ...

  3. HTML 5 video 视频标签全属性详解

    http://www.cnblogs.com/kiter/archive/2013/02/25/2932157.html 现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theor ...

  4. Phpstorm10 主题下载

    ================================================================================ submit:主题 http://ww ...

  5. input标签元素,value属性取值问题,赋值

    验证val:<input type="text" id="id" name="name" value="空值"&g ...

  6. HTML <form>标签

    1.单选按钮 <html> <body> <form> 名: <input type="radio" name="myname& ...

  7. jQuery——动态给表格添加序号

    摘录自:http://www.cnblogs.com/picaso/archive/2012/10/08/2715564.html 很多时候遇到需要对表格动态操作,而且一般都会有表格的序号,但是有时候 ...

  8. oracle01

    01-基本的查询语句 A:一些命令 sqlplus sys/sys@192.168.22.220:1521/orcl as sysdba; conn scott/123456@192.168.22.2 ...

  9. Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。

    时间过的很快,写springcloud(十):服务网关zuul初级篇还在半年前,现在已经是2018年了,我们继续探讨Zuul更高级的使用方式. 上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制 ...

  10. 通过Azure Powershell获取asm及arm虚拟机的配置信息

    1.asm虚拟机可以使用类似如下Azure Powershell命令获取虚拟机的基本信息,包括发行版本,虚拟机名称及size[备注:虚拟机需要是使用平台image创建的] PS C:\Users\he ...