我已经构建了 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 脚本之间的区别是什么。