Win10编译SqlCipher步骤
准备工作
- 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:\mingw\msys\1.0\msys.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源码就编译完成了。接下来就可以参考第一篇参考文章尽情使用该软件啦。
参考文章
本文写作时部分引用上述两篇文章,特此感谢。
Win10编译SqlCipher步骤的更多相关文章
- CentOS6-Linux内核编译 详细步骤
CentOS6-Linux内核编译 详细步骤 背景 Win10用VMwareWorkstation搭的虚拟机 CentOS6.5,内核版本2.6.32-431.el6.x86_64 在该环境下升级至4 ...
- Ubuntu下编译SqlCipher以及解密微信数据库EnMicroMsg.db过程和坑
wget https://codeload.github.com/sqlcipher/sqlcipher/zip/v3.4.2 ./configure --enable-tempstore=yes C ...
- Ubuntu安装 Alisql编译安装步骤:
github地址: https://github.com/alibaba/AliSQL 一.直接git下载保存到本地: git clone https://github.com/alibaba/Ali ...
- Java文件手动编译执行步骤
Java编译执行步骤: 1)将 Java 代码编写到扩展名为 .java 的文件中.2)通过 javac 命令对该 java 文件进行编译.3)通过 java 命令对生成的 class 文件进行运行. ...
- 用VS2015编译sqlcipher
简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...
- android4.0浏览器在eclipse中编译的步骤
工程源码: 注意: 如果下载已经修过的源码,只要进行3.4.8步骤就应该可以了. eclipse版本:adt-bundle-windows (Android Developer Tools Build ...
- How to compile and install NCAR Command Language on IBM PowerPC 64 --- NCL编译安装步骤
作者:Sinsonglew 出处:http://www.cnblogs.com/sinsonglew 欢迎转载,也请保留这段声明.thanks :) 注记:NCL官方依赖安装包全集列表.官方源码编译指 ...
- Qt creator自定义编译运行步骤
一直用Qt creator开发.无它,只是因为linux下C++ IDE选择不多.同时因为我抛弃了MFC,平时写个小工具还得靠Qt,正好一举两用. 用Qt creator开发一般的工程,是不用修改编译 ...
- VS2017编译SNMP++步骤记录
1.下载地址:https://www.agentpp.com/download.html 三个都下 2.新建解决方案 TestSnmp 3.下载后解压到解决方案文件夹(注意,解压后的 snmp++的版 ...
随机推荐
- yum指令
接上个教程,如果用yum list 命名,运行后出现如下结果:则正确搭建了环境 如 yum search httpd 搜索apache的包 安装gcc ,是c语言的编译器 注意:LANG是临时改变的. ...
- struts中用kindeditor实现的图片上传并且显示在页面上
做公司网站的时候由于需要在内容属性中加入图片,所以就有了这个问题,本来一开始找几篇文章看都是讲修改kindeditor/jsp/file_manager_json.jsp和upload_json.js ...
- java 跳出多层循环
lableB: for(int i=0;i<10;i++){ lableA: for(int j=0;j<10;j++){ System.out.println(j); if(j==1){ ...
- phpstudy中的mysql
1.进入mysql命令台,执行 select version()即可 2status;
- Laravel5中使用阿里大于(鱼)发送短信验证码
在做用户注册和个人中心的安全管理时,我实现借助第三方短信平台(阿里大于(鱼))在Laravel框架中进行手机验证的设置:阿里大于,是阿里通信旗下优质便捷的云通信服务平台,整合了三大运营商的通信能力,为 ...
- jQuery——动态给表格添加序号
摘录自:http://www.cnblogs.com/picaso/archive/2012/10/08/2715564.html 很多时候遇到需要对表格动态操作,而且一般都会有表格的序号,但是有时候 ...
- SpringMVC的filter怎么使用Autowired依赖注入bean
有的时候根据我们业务的需要,我们需要在web项目中定义一个自己的filter,并想在这个filter中使用@Autowired注入bean供我们使用.如果直接使用的话是不行的,需要我们在xml文件 ...
- linux_inotify
什么是inotify? 拥有强大.粒细粒度.异步文件系统事件监控机制,监控文件系统中添加.删除.修改.移动等各种事件 版本支持: 内核 2.6.13以上版本,inotify-tools 是实施监控的软 ...
- jinja2.exceptions.TemplateNotFound: home/index.html
问题: 检查路由路径和模版渲染方式,其他文件路径都正确,可以返回字符串,就是无法返回定义的模版,为什么flask无法启找到这个模版? 那,问题原因在哪? 在flask中,目录有着严格的定义,模版目录必 ...
- Servlet--ServletRequest接口,ServletResponse接口
ServletRequest接口 定义 public interface ServletRequest 定义一个 Servlet 引擎产生的对象,通过这个对象, Servlet 可以获得客户端请求的数 ...