用于arm-linux的浮点SQlite3问题
我正在尝试在两台机器上使用 sqlite-3.7.2 交叉编译它,一个 arm-linux 和一个 xscale 系统,我已经使用 ./configure 以非常正常的方式对两个系统进行交叉编译,当然表明主机编译。
问题是我在数据库上有一些 REAL 值。我得到了 xscale 系统的正确值,但是在 arm7 上,我的意思是那些有小数部分的值不正确;
如果我的数据库表中有:
真实 2.00
真实 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
请您参考如下方法:
从OP的评论中:
For those that could have my same problem, I've finally solved it. On the code is explained for the flag
SQLITE_MIXED_ENDIAN_64BIT_FLOAT
what is the issue.To solve it, is necessary to define on CFLAGS environment this flag
(-DSQLITE_MIXED_ENDIAN_64BIT_FLOAT=1)
and the flag-DSQLITE_DEBUG=1
, this last flag assure to get the correct value. So,
$ CFLAGS="-DSQLITE_MIXED_ENDIAN_64BIT_FLOAT=1 -DSQLITE_DEBUG=1"
和
$ 导出 CFLAGS
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。