交叉编译#
交叉编译是一个复杂的话题,我们在此仅提供一些可能有所帮助的提示(目前)。截至 2025 年 5 月,使用 Meson 交叉文件进行交叉编译以及基于 crossenv
的交叉编译均已知可行。Conda-forge 使用后一种方法。不使用 crossenv
的交叉编译需要通过 meson-python 向 meson setup
传递构建选项。
所有已知成功交叉编译 NumPy 的发行版都使用 python -m build
(pypa/build
),但使用 pip
也应该可行。以下是这些发行版中 NumPy “构建配方”的链接:
另请参阅 Meson 关于交叉编译的文档,以了解成功交叉编译可能需要传递给 Meson 的选项。
一个可能的障碍是构建需要运行一个编译好的可执行文件,以确定主机平台的 long double
格式。这可能是一个障碍,因为它需要 crossenv
或 QEMU 来运行主机(交叉)Python。为避免此问题,请在您的交叉文件中指定相关目录的路径。
[properties]
longdouble_format = 'IEEE_DOUBLE_LE'
有关交叉编译 NumPy 所需交叉文件的示例,请参见 numpy#288861。综上所述,使用此类交叉文件调用交叉构建,如下所示:
$ python -m build --wheel -Csetup-args="--cross-file=aarch64-myos-cross-file.txt"
有关交叉编译的更多详细信息和当前状态,请参见:
Python 中交叉编译的状态:pypackaging-native 关键问题页面
带有“交叉编译”标签的 NumPy 问题集
SciPy 交叉编译需求和问题追踪:scipy#14812