如何在Mac上修复“cc:error:unrecognized command line option '-Wshorten-64-to-32'”问题

4
在Mac上编译Python包时,您可能会遇到以下问题: cc: error: unrecognized command line option '-Wshorten-64-to-32' error: command 'cc' failed with exit status 1 这是由于新版本的Xcode在默认情况下不再支持-Wshorten-64-to-32选项。要解决此问题,请按照以下步骤操作:
1. 打开终端并输入以下命令:sudo nano /Library/Developer/CommandLineTools/usr/bin/xcodebuild
2. 按下“Control”和“W”键,然后输入“-Wshorten-64-to-32”。
3. 将所有实例替换为“-Wno-shorten-64-to-32”。
4. 按下“Control”和“O”键,然后按下“Enter”键以保存更改。
5. 按下“Control”和“X”键以退出nano编辑器。
现在,您应该能够成功编译Python包了!
2个回答

9

解决方案是运行以下命令:

export CC=/usr/bin/clang

export CXX=/usr/bin/clang++


1
如果您在Mac OS X系统上看到这个问题,很可能是因为您正在运行Python2.7并使用distutils。
默认情况下,Mac OS X上的Python2.7编译时使用别名“cc”。在编译时,“cc”指的是“clang”。Clang是苹果用于编译C和C ++代码的默认程序。
解决方案1
最合适的解决方案是确保“cc”引用您的Mac OS X发行版上的正确编译器。尝试在终端中输入:
ls -l `which cc`

如果输出结果不是“/usr/bin/cc -> clang”或类似指向clang的内容,则应通过删除(或重新标记)路径中不指向clang的“cc”程序来解决此问题。
如果您安装了gcc或其他c / c ++编译器,则可能已将链接添加到您的路径中,该链接将“cc”引用到不同的编译器。这是不推荐的,因为系统中依赖于cc指向clang的其他编译可能会失败,或者过去使用cc期望clang的编译也可能会失败。一个主要的例子就是带您来到这个页面的原因。 解决方案2 如Igor所提到的,在执行python设置代码和/或编译python代码之前,您可以在终端中输入以下内容:
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++

解决方案3

您也可以在Python中使用以下代码设置这些选项:

import os
os.environ["CC"] = "clang"
os.environ["CXX"] = "clang++"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接