我想编译一个Python的C++扩展。问题是C++程序只在x8664架构中工作,但是默认编译标志包括-ARCH I38。你知道吗
那个设置.py看起来像:
from distutils.core import setup, Extension
integral_ext = Extension('mod._mod',
sources = ['wrap.cpp'],
extra_compile_args = ['-mmacosx-version-min=10.7', '-std=c++11', '-stdlib=libc++'])
setup(
ext_modules = [integral_ext],
)
编译时,终端显示命令为:
/usr/bin/clang -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -c wrap.cpp -o build/temp.macosx-10.6-intel-3.6/wrap.o -mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++
这将失败,因为C++内部的一些静态AsAsDt代码需要x8664。 在删除-arch i386标志后,我可以通过命令行成功地编译它。不过,我正在编写一个库供其他人使用,我想让它变得简单,以便用户可以通过运行python3的标准方式安装它设置.py安装。你知道吗
底线是,我不能改变C++文件,我想在这个里面做点什么。设置.py使其可编译。谢谢!你知道吗
当我在
setup.py
的开头包含以下行时,错误就消失了:运行
python3 setup.py install
时的编译输出是:编译是成功的,但是
clang: warning: argument unused during compilation
的许多警告行看起来仍然很难看。如果有人能建议如何得到的警告,将不胜感激。你知道吗相关问题 更多 >
编程相关推荐