我正在使用Cython为我拥有的几个python模块生成已编译的.so文件。作为outlined in the Cython documentation,您可以按如下方式创建setup.py文件:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize([
'MyModule1.py',
'MyModule2.py',
'MyModule3.py'
])
)
然后使用命令python3 setup.py build_ext --inplace
构建模块。
这样可以正常工作,但它会创建与主机架构相匹配的二进制文件(在我的情况下为x86_64)。我想针对一个不同的架构(armv7l),它的交叉编译和我已经拥有的环境。是否有可能使用python distutils?
答案 0 :(得分:1)
通过扩展程序上的march
传递替代extra_compile_args
及相关标记:
sources = ['MyModule1.py',
'MyModule2.py',
'MyModule3.py']
ext_modules=cythonize(sources,
extra_compile_args=['-march=armv7l'],
library_dirs=[<arm v7 libraries>],
include_path=[<arm v7 includes>])
需要armv7l的工作构建工具链。
基于armv7l的linux的Docker容器可能更容易使用,并且会自动构建arm。
正如可以在脚本中运行docker容器构建并为所需的所有体系结构和操作系统生成本机包。