交叉编译#
交叉编译是一个复杂的话题,我们目前仅在此处添加一些希望有帮助的提示。截至 2023 年 5 月,基于 crossenv 的交叉编译已知有效,例如 conda-forge 中使用的。不使用 crossenv 的交叉编译需要一些手动覆盖。您可以通过 meson-python 将选项传递给 meson setup 来指示这些覆盖。
所有已知成功交叉编译 SciPy 的发行版都使用 python -m build (pypa/build),但使用 pip 也应该可行。以下是这些发行版上 SciPy 的“构建配方”的链接
另请参阅 Meson 关于交叉编译的文档,以了解您可能需要传递给 Meson 的选项,以成功进行交叉编译。
一个常见的障碍是 numpy 和 pythran 需要运行 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'
有关更多详细信息和交叉编译的当前状态,请参阅
SciPy 交叉编译需求和问题的跟踪问题:scipy#14812
Python 中交叉编译的状态:pypackaging-native 关键问题页面