如何建立sqlcipher?

时间:2018-10-07 13:48:48

标签: c sqlite mingw linker-errors

首先,我使用mingw完成了构建并创建了sqlcipher.exe文件。 顺便说一句,在构建过程中有一个警告。 因此,我怀疑是否构建正确。

警告内容:

$ make
./libtool --mode=compile --tag=CC gcc -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_OPENSSL -I/c/opensslbuild32/include /c/sqlcipher/libeay32.dll -L/c/sqlcipher/ -static-libgcc -DSQLITE_OS_WIN=1 -I. -I/c/sqlcipher/src -I/c/sqlcipher/ext/rtree -I/c/sqlcipher/ext/icu -I/c/sqlcipher/ext/fts3 -I/c/sqlcipher/ext/async -I/c/sqlcipher/ext/session -D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG  -DSQLITE_THREADSAFE=1    -DSQLITE_TEMP_STORE=1 -c sqlite3.c
libtool: compile:  gcc -DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_OPENSSL -I/c/opensslbuild32/include /c/sqlcipher/libeay32.dll -L/c/sqlcipher/ -static-libgcc -DSQLITE_OS_WIN=1 -I. -I/c/sqlcipher/src -I/c/sqlcipher/ext/rtree -I/c/sqlcipher/ext/icu -I/c/sqlcipher/ext/fts3 -I/c/sqlcipher/ext/async -I/c/sqlcipher/ext/session -D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG -DSQLITE_THREADSAFE=1 -DSQLITE_TEMP_STORE=1 -c sqlite3.c  -DDLL_EXPORT -DPIC -o .libs/sqlite3.o
sqlite3.c: In function 'sqlcipher_cipher_profile':
sqlite3.c:21289:8: warning: implicit declaration of function 'fopen_s' [-Wimplicit-function-declaration]
 if(fopen_s(&f, destination, "a") != 0){
    ^~~~~~~
gcc.exe: warning: c:/sqlcipher/libeay32.dll: linker input file because linking not done

尤其是,我认为这句话是个问题。  

我可以忽略警告吗? 我担心openssl库是否已正确链接和构建。 这是一个好建筑吗?

1 个答案:

答案 0 :(得分:1)

  

我可以忽略警告吗?

不,你不能。

链接器错过了在第21289行的文件sqlite3.c中调用的fopen_s()的实现:

sqlite3.c:21289:8: warning: implicit declaration of function 'fopen_s' [-Wimplicit-function-declaration]
 if(fopen_s(&f, destination, "a") != 0){
    ^~~~~~~

因此,libeay32.dll的构建失败了。