用lua 5.1.5调用'require(“lsqlite3”)'时得到了SIGSEGV

时间:2012-10-05 16:20:44

标签: lua

我已经构建了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

  

需要( “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脚本之间的区别。

1 个答案:

答案 0 :(得分:0)

lsqlite3.c中有三个位置使用sqlite_int64(从不直接long long)。当你构建sqlite3时,某些类型将用于64位整数; lsqlite3将使用相同的类型,包括sqlite3.h来定义类型。