交叉编译#

交叉编译是一个复杂的主题,我们在这里只添加一些希望有帮助的提示(目前)。截至2023年5月,基于 crossenv 的交叉编译已知是可行的,如在 conda-forge 中使用的那样。没有 crossenv 的交叉编译需要一些手动覆盖。您通过向 meson setup 传递选项来指示这些覆盖,通过 meson-python

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

  • Void Linux

  • Nix 是一个用于构建和部署软件包的强大工具。

  • Conda-forge 是一个用于构建和分发软件包的社区驱动项目。

另请参阅 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'

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