Python “如何修复”;cc:error:无法识别的命令行选项'-Wshorten-64-to-32'&引用;Mac上的问题

Python “如何修复”;cc:error:无法识别的命令行选项'-Wshorten-64-to-32'&引用;Mac上的问题,python,macos,Python,Macos,在Mac上编译python包时,可能会出现以下问题: cc-fno严格别名-fno common-dynamic-arch x86_64-arch i386-g-Os-pipe-fno common-fno严格别名-fwrapv-DENABLE_DTRACE-DMACOSX-DNDEBUG-Wall-Wstrict原型-Wshorten-64-to-32-DNDEBUG-g-fwrapv-Os-Wall-Wstrict原型-DENABLE_DTRACE-arch x86_64-arch i386

在Mac上编译python包时,可能会出现以下问题:

cc-fno严格别名-fno common-dynamic-arch x86_64-arch i386-g-Os-pipe-fno common-fno严格别名-fwrapv-DENABLE_DTRACE-DMACOSX-DNDEBUG-Wall-Wstrict原型-Wshorten-64-to-32-DNDEBUG-g-fwrapv-Os-Wall-Wstrict原型-DENABLE_DTRACE-arch x86_64-arch i386-pipe-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7-c src/misaka.c-o build/temp.macosx-10.9-intel-2.7/src/misaka.o

cc:error:无法识别的命令行选项'-Wshorten-64-to-32'


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

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

export CC=/usr/bin/clang


export CXX=/usr/bin/clang++

如果您在Mac OS X系统上看到此问题,很可能是因为您正在运行Python2.7并使用distutils

默认情况下,Mac OS X上的Python2.7使用别名“cc”编译。在编译时,“cc”指的是“铿锵”。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++"