我已经构建了lua 5.1.5和lsqlite3-0.8.1。所有这些都在我的RedHat Linux上运行良好。
然后我将它们移植到我的MIPS开发板。 lua和其他模块(如luafilesystem,md5,cgilua和wsapi)运行良好。但lsqlite3不起作用。
当我在lua命令行中执行require(“lsqlite3”)时,它会在下面返回错误消息:
Lua 5.1.5版权所有(C)1994-2012 Lua.org,PUC-Rio
需要( “lsqlite3”) do_page_fault()#2:将SIGSEGV发送给lua以进行无效的读访问 00000000(epc == 00000000,ra == 2ac36144) 分段错误
任何人都可以帮我解决一下吗?谢谢!
我在解决这个问题方面没什么进展,我用gcc编译选项'-Wl,-E'重建了LUA,之后重建了lsqlite3。我在lua命令行中执行了require(“lsqlite3”),它没有打印任何消息。我继续运行其他一些数据库操作命令,发现它们都已成功执行。由于问题似乎已经解决了,我应该对此感到非常高兴。 但又提出了另一个更奇怪的问题。
如果我将句子require(“lsqlite3”)放入文件中,然后以这种方式执行文件:
lua文件
它仍然会打印出如下错误消息:
do_page_fault()#2:将SIGSEGV发送给lua以进行无效的读访问 2ada054c(epc == 2ada054c,ra == 2abdceac)
如果我将更多的数据库操作句子放入文件中,然后通过lua运行此文件。 Lua可以给出正确的查询操作结果并正确地将值插入表中,但总是打印上面显示的错误消息。
如果我在lua命令行界面中逐个运行文件中的句子,它永远不会打印此错误消息。
执行'require'功能时似乎给出了错误信息。但是,如果我将require(“lfs”)放入文件并通过lua运行此文件,它永远不会打印错误消息。
我很困惑,这是lua命令行执行和lua脚本之间的区别。
答案 0 :(得分:0)
lsqlite3.c
中有三个位置使用sqlite_int64
(从不直接long long
)。当你构建sqlite3时,某些类型将用于64位整数; lsqlite3将使用相同的类型,包括sqlite3.h
来定义类型。