【发布时间】:2018-02-21 23:39:07
【问题描述】:
我正在尝试编译 C 项目,但收到错误消息“SQLite 无法与 GCC 的 -ffast-math 选项一起正常工作”。我想知道如何绕过此错误(尽管我不确定这样做的含义)或任何其他可能更合适的解决方案。
【问题讨论】:
我正在尝试编译 C 项目,但收到错误消息“SQLite 无法与 GCC 的 -ffast-math 选项一起正常工作”。我想知道如何绕过此错误(尽管我不确定这样做的含义)或任何其他可能更合适的解决方案。
【问题讨论】:
如果您查看 SQLite 源代码,您会发现此错误来自 SQLite 的 sqlite3IsNaN 的后备实现,当与 NaN 操作数一起使用时,它依赖于 IEEE 对 != 运算符的古怪定义。
如果您的 C 库中有一个有效的 isnan 函数,您可以使用 #define SQLITE_HAVE_ISNAN,这将使 SQLite 使用现有的 isnan 而不是滚动自己的。
或者,您可以不使用-ffast-math 来编译 SQLite。
【讨论】:
发生此错误是因为您在 CFLAGS 中使用 gcc 选项 -ffast-math 配置了构建。可能发生的事情是您在您的环境中导出了默认 CFLAGS,可能来自您的.bashrc/.bash_profile/.profile。如果是这样,你真的应该删除它,因为-ffast-math 是有害的,并且会破坏不适合与它一起使用的代码。
要解决此问题,请先彻底清理构建树并从头开始。然后从设置的位置删除 CFLAGS,注销并重新登录,或者在运行构建系统的配置脚本或类似脚本之前在 shell 中unset CFLAGS。
【讨论】: