C/C++教程

sqlcipher离线编译

本文主要是介绍sqlcipher离线编译,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

编译tcl

# tar -xvzf tcl8.6.9-src.tar.gz
# cd tcl8.69/unix
# ./configure --prefix=/user/local/tcl
# make
# sudo make install
# sudo ln -s /user/local/tcl/bin/tclsh8.6 /bin/tclsh

编译sqlite3

SQLite不使用Git版本控制系统。SQLite使用Fossil作为替代  make clean
    1,下载SQLite源代码sqlite-3.6.23.1.tar.gz
    2,复制sqlite-3.6.23.1.tar.gz到linux上的/usr/src目录
    3,  解压源代码 tar -xvzf sqlite-3.6.23.1.tar.gz
    4,进入源代码目录  cd sqlite-3.6.23.1
    5,配置编译与安装参数
         ./configure   --prefix=/usr/local/sqlite
    6,编译 make
    7, 安装  make install
    进入SQLite安装目录
    cd /usr/local/sqlite/bin
    安装好SQLite后,主要包括命令文件、头文件和库文件。
    目录文件 说明
    /usr/local/sqlite/bin 只有一个命令文件Sqlite 
    /usr/local/sqlite/include 包含sqlite3.h和sqlite3ext.h两个头文件
    /usr/local/sqlite/lib 包含libsqlite3.so和libsqlite3.a等SQLite静态库和动态库文件
    

LD_LIBRARY_PATH: 动态库的查找路径
使用时将sqlite3命令文件和库文件路径导入到环境变量,可修改~/.bashrc文件或~/.bash_profile文件或/etc/profile文件。
$ vi ~/.bashrc        // 修改配置文件,添加以下两行
复制代码 代码如下:
export PATH=/usr/local/sqlite/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/sqlite/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=/usr/local/sqlite/include:$C_INCLUDE_PATH
##    
 source ~/.bashrc       // 执行配置文件
 C_INCLUDE_PATH、CPLUS_INCLUDE_PATH

openssh

  https://www.openssl.org/source/
 https://github.com/openssl/openssl
    $ ./Configure --prefix=/usr/local/ssl --openssldir=/usr/local/ssl  '-Wl,-rpath,$(LIBRPATH)'
	https://github.com/openssl/openssl/blob/master/NOTES-UNIX.md
 1. 安装activePerl,因为OPENSSL源码需要用到perl指令。(http://www.activestate.com/activeperl/downloads)
 2. 下载openssl源码。(https://www.openssl.org/source/)
 3. 下载MASM,因为需要对汇编语言编译。(http://www.microsoft.com/en-us/download/)

sqlcipher在linux上编译

 编译sqlite,只需按照readme中的方法编译即可。
 编译sqlcipher,在linux上测试,
      只需配置configure时,增加SQLITE_HAS_CODEC和SQLITE_TEMP_STORE=2,就可以正常编译出有加密功能的sqlite3可执行文件
 	 sqlcipher使用了openssl的加密算法,因此,需要下载编译openssl库文件
 sqlcipher是sqlite3的加强版,提供加密。
 也就是sqlite3的修改版,里面修改添加了代码,并以一些预编译宏来进行分支选路。
 所有修改过的代码片段都包含在预编译宏SQLITE_HAS_CODEC保护下  SQLITE_TEMP_STORE 编译时参数是源代码中的宏定义(#define),其取值范围是0到3(缺省值为1)
 
  ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC"
  
  sqlite-release/manifest', needed by `sqlite3.h'.  Stop.
  SQLITE_HAS_CODEC 和 SQLITE_TEMP_STORE=2

 ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto" --prefix=/usr/local/sqlcipher -L /usr/local/sqlite/include
$ ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto -L /usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include"
$ ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto -L /usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include"
$ make
$ sudo make install

验证和创建

  验证sqlcipher

   # sqlcipher
  创建加密数据库
  # sqlcipher test.db	

参考

https://github.com/mackyle/sqlite
https://sqlite.org/src/dir?ci=trunk
https://repo.or.cz/sqlite.git	
https://github.com/sqlcipher/sqlcipher	
https://github.com/tcltk/tcl/archive/refs/tags/release.tar.gz
这篇关于sqlcipher离线编译的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!