我正在尝试使用sqlite-3.7.2在两台机器中交叉编译它,一个 arm-linux 和一个 xscale 系统,我已经使用它进行交叉编译。 /以非常正常的方式为两个系统配置,指示当然要编译的主机。
问题是我在数据库上有一些REAL值。我得到了 xscale 系统的正确值,但在 arm7 上,对于那些有小数部分的人,我得到的值不正确,我的意思是;
如果我在我的数据库表中:
REAL 2.00
REAL 2.02
当我选择这些值时,我得到:
的 2.00
的 -4310086189061.12
对于 xscale 工作正常,所以我认为这是arm的sqlite编译问题。
我做了一项研究,但我没有找到这么多,只是这样: http://www.mail-archive.com/sqlite-users@sqlite.org/msg40528.html 建议在编译时使用-DSQLITE_MIXED_ENDIAN_64BIT_FLOAT = 1标志,但我无法在代码中找到它,只是将其添加到configure或Makefie.am文件中不起作用。
如果有人对此问题有任何解决方案或信息,我将非常感激,因为我完全陷入困境
非常感谢
JC
编辑: 在交叉编译sqlite3之前,对我有用的解决方案是在环境中定义变量CFLAGS:
$ CFLAGS =“ - DSQLITE_MIXED_ENDIAN_64BIT_FLOAT = 1 -DSQLITE_DEBUG = 1”
$ 导出CFLAGS
答案 0 :(得分:1)
来自OP的评论:
对于那些可能遇到同样问题的人,我终于解决了。在代码上解释了标志
SQLITE_MIXED_ENDIAN_64BIT_FLOAT
是什么问题。要解决此问题,有必要在CFLAGS环境中定义此标志
(-DSQLITE_MIXED_ENDIAN_64BIT_FLOAT=1)
和标志-DSQLITE_DEBUG=1
,此最后一个标志确保获取正确的值。所以,
$ CFLAGS =“ - DSQLITE_MIXED_ENDIAN_64BIT_FLOAT = 1 -DSQLITE_DEBUG = 1”
和
$ export CFLAGS