天天看點

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

本文寫作時部分引用上述兩篇文章,特此感謝。

『注:本文來自部落格園“小溪的部落格”,若非聲明均為原創内容,請勿用于商業用途,轉載請注明出處http://www.cnblogs.com/xiaoxi666/』