sqlcipher windows 平台编译方法
预先准备条件:
1、OpenSSL windows平台下的库
2、MingW 环境,包括一些编译开发工具,如 gcc-g++、tclsh
3、sqlcipher 源码
对于 1:OpenSSL windows平台下的库比较好编,源码中直接有VS工程,网上也有教程。我编的是静态库,编译好后会有两个dll和两个lib文件: libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib;一个include文件夹,里面是openssl头文件。
对于 2:MingW 在线安装被墙,这里用的离线安装。参考http://www.swingworks.net/2010/11/install_mingw_and_msys_with_mingw-get-inst/ 来进行安装。
当时我先使用cygwin进行编译。
cygwin 下编译提示:configure: error: C compiler cannot create executables 查了好久也没找到原因。遂放弃改用MIngW。
后面了下,cygwin和MingW初衷不一。 MingW用来移植Linux上的应用到Winodws平台;cygwin用于在Windows环境下开发Linux程序。
tclsh MingW 安装时。下载windows 版本安装,安装后再MingW bash中试试命令是否可以正确识别。下载:https://www.activestate.com/activetcl
开始编译:
1、使用MingW bash,进入sqlcipher 源码所在文件,这里是D:\sqlcipher
2、把libeay32.dll 拷贝到当前目录
执行 ./configure –with-crypto-lib=none –disable-tcl CFLAGS=”-DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_OPENSSL -I/d/openss/include /d/sqlcipher/libeay32.dll -L/d/sqlcipher/ -static-libgcc” LDFLAGS=”-leay32”
其中/d/openss/include 即openssl编译后生成的include文件夹,里面一堆头文件
3、make clean
make sqlite3.c
make
make dll
执行完这几步后,会在sqlcipher目录下生成所需要的sqlite3.c sqlite3.h sqlite3.dll
4、打开VS 命令工具,cd 到sqlcipher目录
执行 lib /def:sqlite3.def
会生成sqlite3.lib
至此,过程完毕。第3步make过程中提示缺什么在安装什么。比如提示tclsh command not found, 安装tclsh 即可
这样后面可以直接使用静态库或是编slite3.c 源码都可以了
其他
如果不需要跨平台统一版本编译,则可使用现成的库
android平台:https://github.com/sqlcipher/android-database-sqlcipher/
windows平台:https://github.com/CovenantEyes/sqlcipher-windows
References: http://www.jerryrw.com/howtocompile.php