clang: 错误:未知参数:'-mno-fused-madd

0 投票
2 回答
933 浏览
提问于 2025-04-18 03:55

在安装ReportLab 3.1.8的时候,我遇到了一个问题,总是出现错误,而且我找不到这个编译选项是在哪里设置的。

出错的地方是在设置过程中:

正在构建'reportlab.lib._rl_accel'扩展

clang: 错误: 未知参数: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

clang: 注意: 未来这将成为一个严重错误(不能降级为警告)

错误: 命令'cc'失败,退出状态为1

2 个回答

0

你可以通过使用以下环境变量来抑制这些来自clang的错误:

export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments

关于类似问题的详细解答可以在这里找到:

clang错误:未知参数:'-mno-fused-madd'(Python包安装失败)

根据以下信息,这个问题在OS X 10.9.3中也得到了修复:

clang:错误:未知参数:'-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

1

这是我的解决办法。

原因:我一直保持我的Mac系统更新,因此现在我有了一个更新的(不同的)C编译器版本(clang),这个版本不支持“-mno-fused-madd”这个命令行选项。

解决办法:我在reportlab的源代码中没有找到这个选项。这个问题似乎出在电脑本身。问题的根源可能在distutils,因为setup.py使用了distutils模块。

问题出在这个文件/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py。这个文件包含一个名为build_time_vars的字典定义。显然,我们找对地方了,因为我们遇到了构建时的问题。

  1. 首先,做一个备份以防万一。
  2. sudo <编辑器> <文件路径>来编辑这个文件。
  3. 然后在编辑这个文件时,搜索并删除文件中的-mno-fused-madd选项。我在以'CFLAGS'开头的那一行找到了它,因为这是一个编译标志。 修改这一行:

... -fwrapv -mno-fused-madd -DENABLE_DTRACE ... 改为 ... -fwrapv -DENABLE_DTRACE ...

保存文件后继续构建。现在问题就解决了,不需要设置环境变量或其他任何东西。

补充:在此期间,删除 _sysconfigdata.pyc 和 _sysconfigdata.pyo 文件。

撰写回答