首页 文章

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

提问于
浏览
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发送SIGSEGV到lua进行无效读访问(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

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

相关问题