我已经构建了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 回答
lsqlite3.c
中有三个位置使用sqlite_int64
(从不直接long long
) . 当你构建sqlite3时,某些类型将用于64位整数; lsqlite3将使用相同的类型,包括sqlite3.h
用于类型的定义 .