用于arm-linux的浮点的SQlite3问题

时间:2011-04-19 09:49:16

标签: sqlite floating-point arm type-conversion

我正在尝试使用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

1 个答案:

答案 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