如何修复M上的“cc:error:无法识别的命令行选项'Wshorten64to32'”问题

2024-06-01 08:05:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -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: unrecognized command line option '-Wshorten-64-to-32'

error: command 'cc' failed with exit status 1


Tags: oscommonx86ccarchpipewallstrict
2条回答

如果在macosx系统上看到这个问题,很可能是因为您正在运行Python2.7并使用distutils。在

默认情况下,macosx上的Python2.7是用别名“cc”编译的。在编译时,“cc”指的是“clang”。Clang是苹果用来编译C和C++代码的默认程序。在

解决方案1

最合适的解决方案是确保“cc”指向macosx发行版上的正确编译器。尝试在终端中键入:

ls -l `which cc`

如果输出没有解析为“/usr/bin/cc->;clang”或类似的指向clang的内容,则应该通过删除(或重新标记)路径中不指向clang的“cc”程序来解决此问题。在

如果您安装了gcc或其他c/c++编译器,那么它可能已经添加了一个指向路径的链接,该路径将“cc”指向另一个编译器。不建议这样做,因为系统中依赖cc引用clang的其他编译,或者在过去使用过cc而预期clang的编译可能会失败。一个很好的例子就是把你带到这一页的原因。在

解决方案2

如Igor所述,您可以在执行python设置代码和/或编译python代码之前输入终端:

^{pr2}$

解决方案3

也可以在python内部使用以下命令设置这些选项:

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

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

export CC=/usr/bin/clang

export CXX=/usr/bin/clang++

相关问题 更多 >