交叉编译#

交叉编译是一个复杂的主题,我们目前只提供一些希望有帮助的提示。截至 2023 年 5 月,基于 crossenv 的交叉编译已知有效,例如在 conda-forge 中使用。没有 crossenv 的交叉编译需要一些手动覆盖。你可以通过 meson-pythonmeson setup 传递选项来指示这些覆盖。

所有已知成功交叉编译 SciPy 的发行版都使用 python -m build (pypa/build),但是使用 pip 也应该是可能的。以下是这些发行版上 SciPy 的“构建配方”的链接。

另请参阅 Meson 的交叉编译文档,了解可能需要传递给 Meson 的选项才能成功交叉编译。

一个常见的障碍是,numpypythran 需要运行 Python 代码才能获取其包含目录。这往往不太好,要么意外地从构建(原生)Python 中获取包,而不是主机(交叉)Python,要么需要 crossenv 或 QEMU 来运行主机 Python。为了避免这个问题,请在你的交叉文件中指定相关目录的路径。

[constants]
sitepkg = '/abspath/to/host-pythons/site-packages/'

[properties]
numpy-include-dir = sitepkg + 'numpy/core/include'
pythran-include-dir = sitepkg + 'pythran'

有关交叉编译的更多详细信息和当前状态,请参阅