用于arm-linux的浮点SQlite3问题

kuangbin 阅读:19 2024-10-25 08:56:14 评论:0

我正在尝试在两台机器上使用 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


标签:linux
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号