python - libtool:错误:“tclsqlite.lo”不是有效的 libtool 对象
问题描述
我目前正在尝试在 raspberry-pi4 buster debian 上安装 sqlcipher,同时遵循本指南https://charlesleifer.com/blog/encrypted-sqlite-databases-with-python-and-sqlcipher/。
但是,每当我使用 make 函数时,我都没有运气,因为我得到了这个错误;
./libtool --mode=compile --tag=CC gcc -DSQLITE_DEFAULT_CACHE_SIZE=-8000 -DSQLITE_SOUNDEX -DSQLITE_USE_URI -DSQLITE_HAS_CODEC -O2 -DSQLCIPHER_CRYPTO_OPENSSL -DSQLITE_OS_UNIX=1 -I. -I/home/pi/sqlcipher/src -I/home/pi/sqlcipher/ext/rtree -I/home/pi/sqlcipher/ext/icu -I/home/pi/sqlcipher/ext/fts3 -I/home/pi/sqlcipher/ext/async -I/home/pi/sqlcipher/ext/session -I/home/pi/sqlcipher/ext/userauth -D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG -I/usr/local/include -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT -DSQLITE_HAVE_ZLIB=1 -DUSE_TCL_STUBS=1 -c /home/pi/sqlcipher/src/tclsqlite.c
libtool: compile: gcc -DSQLITE_DEFAULT_CACHE_SIZE=-8000 -DSQLITE_SOUNDEX -DSQLITE_USE_URI -DSQLITE_HAS_CODEC -O2 -DSQLCIPHER_CRYPTO_OPENSSL -DSQLITE_OS_UNIX=1 -I. -I/home/pi/sqlcipher/src -I/home/pi/sqlcipher/ext/rtree -I/home/pi/sqlcipher/ext/icu -I/home/pi/sqlcipher/ext/fts3 -I/home/pi/sqlcipher/ext/async -I/home/pi/sqlcipher/ext/session -I/home/pi/sqlcipher/ext/userauth -D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG -I/usr/local/include -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT -DSQLITE_HAVE_ZLIB=1 -DUSE_TCL_STUBS=1 -c /home/pi/sqlcipher/src/tclsqlite.c -o tclsqlite.o
/home/pi/sqlcipher/src/tclsqlite.c:298:3: error: unknown type name \u2018CONST\u2019; did you mean \u2018CONST86\u2019?
CONST char *buf,
^~~~~
CONST86
/home/pi/sqlcipher/src/tclsqlite.c:371:3: error: \u2018TCL_CHANNEL_VERSION_2\u2019 undeclared here (not in a function); did you mean \u2018TCL_CHANNEL_VERSION_5\u2019?
TCL_CHANNEL_VERSION_2, /* version */
^~~~~~~~~~~~~~~~~~~~~
TCL_CHANNEL_VERSION_5
/home/pi/sqlcipher/src/tclsqlite.c:374:3: error: \u2018incrblobOutput\u2019 undeclared here (not in a function); did you mean \u2018incrblobInput\u2019?
incrblobOutput, /* outputProc */
^~~~~~~~~~~~~~
incrblobInput
/home/pi/sqlcipher/src/tclsqlite.c: In function \u2018DbTraceV2Handler\u2019:
/home/pi/sqlcipher/src/tclsqlite.c:657:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Tcl_NewWideIntObj((Tcl_WideInt)pStmt));
^
/home/pi/sqlcipher/src/tclsqlite.c:672:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Tcl_NewWideIntObj((Tcl_WideInt)pStmt));
^
/home/pi/sqlcipher/src/tclsqlite.c:686:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Tcl_NewWideIntObj((Tcl_WideInt)pStmt));
^
/home/pi/sqlcipher/src/tclsqlite.c:698:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Tcl_NewWideIntObj((Tcl_WideInt)db));
^
In file included from /usr/local/include/tcl.h:2216,
from /home/pi/sqlcipher/src/tclsqlite.c:41:
/home/pi/sqlcipher/src/tclsqlite.c: In function \u2018DbObjCmd\u2019:
/home/pi/sqlcipher/src/tclsqlite.c:2161:14: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
subCmd = Tcl_GetStringFromObj( objv[2], 0 );
^
/home/pi/sqlcipher/src/tclsqlite.c:2176:16: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
Tcl_GetStringFromObj(objv[3],0), "\" to integer", (char*)0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2190:11: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
Tcl_GetStringFromObj(objv[2],0), "\": must be flush or size",
^
/home/pi/sqlcipher/src/tclsqlite.c:2219:31: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
Tcl_DeleteCommand(interp, Tcl_GetStringFromObj(objv[0], 0));
^
/home/pi/sqlcipher/src/tclsqlite.c:2238:13: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zName = Tcl_GetStringFromObj(objv[2], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2327:36: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
isComplete = sqlite3_complete( Tcl_GetStringFromObj(objv[2], 0) );
^
/home/pi/sqlcipher/src/tclsqlite.c:2448:14: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zSep = Tcl_GetStringFromObj(objv[5], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2453:15: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zNull = Tcl_GetStringFromObj(objv[6], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2457:17: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zConflict = Tcl_GetStringFromObj(objv[2], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2458:14: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zTable = Tcl_GetStringFromObj(objv[3], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2459:13: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zFile = Tcl_GetStringFromObj(objv[4], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2886:13: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zName = Tcl_GetStringFromObj(objv[2], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c: In function \u2018DbMain\u2019:
/home/pi/sqlcipher/src/tclsqlite.c:3747:12: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zArg = Tcl_GetStringFromObj(objv[1], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:3882:10: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zArg = Tcl_GetStringFromObj(objv[1], 0);
^
make: *** [Makefile:1078: tclsqlite.lo] Error 1
我尝试使用 make -n > cmds.sh && sh cmds.sh 命令,这是我得到的错误;
libtool: compile: gcc -DSQLITE_DEFAULT_CACHE_SIZE=-8000 -DSQLITE_SOUNDEX -DSQLITE_USE_URI -DSQLITE_HAS_CODEC -O2 -DSQLCIPHER_CRYPTO_OPENSSL -DSQLITE_OS_UNIX=1 -I. -I/home/pi/sqlcipher/src -I/home/pi/sqlcipher/ext/rtree -I/home/pi/sqlcipher/ext/icu -I/home/pi/sqlcipher/ext/fts3 -I/home/pi/sqlcipher/ext/async -I/home/pi/sqlcipher/ext/session -I/home/pi/sqlcipher/ext/userauth -D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG -I/usr/local/include -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_STAT4 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT -DSQLITE_HAVE_ZLIB=1 -DUSE_TCL_STUBS=1 -c /home/pi/sqlcipher/src/tclsqlite.c -o tclsqlite.o
/home/pi/sqlcipher/src/tclsqlite.c:298:3: error: unknown type name \u2018CONST\u2019; did you mean \u2018CONST86\u2019?
CONST char *buf,
^~~~~
CONST86
/home/pi/sqlcipher/src/tclsqlite.c:371:3: error: \u2018TCL_CHANNEL_VERSION_2\u2019 undeclared here (not in a function); did you mean \u2018TCL_CHANNEL_VERSION_5\u2019?
TCL_CHANNEL_VERSION_2, /* version */
^~~~~~~~~~~~~~~~~~~~~
TCL_CHANNEL_VERSION_5
/home/pi/sqlcipher/src/tclsqlite.c:374:3: error: \u2018incrblobOutput\u2019 undeclared here (not in a function); did you mean \u2018incrblobInput\u2019?
incrblobOutput, /* outputProc */
^~~~~~~~~~~~~~
incrblobInput
/home/pi/sqlcipher/src/tclsqlite.c: In function \u2018DbTraceV2Handler\u2019:
/home/pi/sqlcipher/src/tclsqlite.c:657:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Tcl_NewWideIntObj((Tcl_WideInt)pStmt));
^
/home/pi/sqlcipher/src/tclsqlite.c:672:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Tcl_NewWideIntObj((Tcl_WideInt)pStmt));
^
/home/pi/sqlcipher/src/tclsqlite.c:686:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Tcl_NewWideIntObj((Tcl_WideInt)pStmt));
^
/home/pi/sqlcipher/src/tclsqlite.c:698:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
Tcl_NewWideIntObj((Tcl_WideInt)db));
^
In file included from /usr/local/include/tcl.h:2216,
from /home/pi/sqlcipher/src/tclsqlite.c:41:
/home/pi/sqlcipher/src/tclsqlite.c: In function \u2018DbObjCmd\u2019:
/home/pi/sqlcipher/src/tclsqlite.c:2161:14: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
subCmd = Tcl_GetStringFromObj( objv[2], 0 );
^
/home/pi/sqlcipher/src/tclsqlite.c:2176:16: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
Tcl_GetStringFromObj(objv[3],0), "\" to integer", (char*)0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2190:11: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
Tcl_GetStringFromObj(objv[2],0), "\": must be flush or size",
^
/home/pi/sqlcipher/src/tclsqlite.c:2219:31: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
Tcl_DeleteCommand(interp, Tcl_GetStringFromObj(objv[0], 0));
^
/home/pi/sqlcipher/src/tclsqlite.c:2238:13: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zName = Tcl_GetStringFromObj(objv[2], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2327:36: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
isComplete = sqlite3_complete( Tcl_GetStringFromObj(objv[2], 0) );
^
/home/pi/sqlcipher/src/tclsqlite.c:2448:14: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zSep = Tcl_GetStringFromObj(objv[5], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2453:15: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zNull = Tcl_GetStringFromObj(objv[6], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2457:17: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zConflict = Tcl_GetStringFromObj(objv[2], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2458:14: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zTable = Tcl_GetStringFromObj(objv[3], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2459:13: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zFile = Tcl_GetStringFromObj(objv[4], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:2886:13: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zName = Tcl_GetStringFromObj(objv[2], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c: In function \u2018DbMain\u2019:
/home/pi/sqlcipher/src/tclsqlite.c:3747:12: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zArg = Tcl_GetStringFromObj(objv[1], 0);
^
/home/pi/sqlcipher/src/tclsqlite.c:3882:10: error: invalid type argument of unary \u2018*\u2019 (have \u2018int\u2019)
zArg = Tcl_GetStringFromObj(objv[1], 0);
^
libtool: error: 'tclsqlite.lo' is not a valid libtool object
请帮忙。
解决方案
推荐阅读
- ios - UITableViewCell 滚动后被删除
- export - 从 Codepen 导出的笔不再有效。我错过了什么?
- python - 如何告诉 mypy 包含存根文件
- python - 与多线程相比,多处理是否加快了文件传输速度
- ios - 如何在使用纹理文件的模型中查找所有 SCNMaterials
- web-services - 无法从 IIS 上托管的 Web 服务调用批处理文件
- java - 搜索领域
- express - Axios 支持 Set-Cookie 吗?是否可以通过 Axios HTTP 请求进行身份验证?
- angular - 如何将调色板中的颜色应用于角度4中的元素
- swift - iPhone 的 FLAC 录音未使用 Google Speech API 进行转换