1

我已经构建了 lua 5.1.5 和 lsqlite3-0.8.1。它们都在我的 RedHat Linux 上运行良好。

然后我将它们移植到我的 MIPS 开发板上。lua 和其他模块(如 luafilesystem、md5、cgilua 和 wsapi)运行良好。但 lsqlite3 不起作用。

当我在 lua 命令行中执行 require("lsqlite3") 时,它会返回以下错误消息:

lua

Lua 5.1.5 版权所有 (C) 1994-2012 Lua.org, PUC-Rio

require("lsqlite3") do_page_fault() #2: 从 00000000 (epc == 00000000, ra == 2ac36144) 发送 SIGSEGV 到 lua 进行无效读取访问

任何人都可以帮我解决它吗?谢谢!

我在解决这个问题方面进展甚微,我用 gcc 编译选项“-Wl,-E”重建了 LUA,后来又重建了 lsqlite3。我在 lua 命令行中执行了 require ("lsqlite3") ,它没有打印任何消息。我继续运行其他一些数据库操作命令,发现它们都被成功执行了。看来问题已经解决了,我应该很高兴。但又提出了一个更奇怪的问题。

如果我将语句 require("lsqlite3") 放入一个文件中,然后以这种方式执行该文件:

lua 文件

它仍然打印这样的错误消息:

do_page_fault() #2: 向 lua 发送 SIGSEGV 以获取来自 2ada054c 的无效读取访问(epc == 2ada054c,ra == 2abdceac)

如果我把更多的数据库操作语句放到一个文件中,然后通过lua运行这个文件。Lua 可以给出正确的查询操作结果并将值正确插入到表中,但总是打印上面显示的错误消息。

如果我在 lua 命令行界面中逐个运行文件中的句子,它永远不会打印此错误消息。

执行“require”函数时似乎给出了错误消息。但是,如果我将 require("lfs") 放入一个文件并通过 lua 运行该文件,它永远不会打印错误消息。

我很困惑 lua 命令行执行和 lua 脚本之间的区别是什么。

4

1 回答 1

0

lsqlite3.cwhere有三个地方sqlite_int64使用(从不long long直接使用)。当您构建 sqlite3 时,某些类型将用于 64 位整数;lsqlite3 将通过包含类型sqlite3.h的定义来使用相同的类型。

于 2012-10-06T15:59:16.783 回答