交叉编译#
交叉编译是一个复杂的主题,我们在这里只添加一些希望有用的提示(目前).截至 2025 年 5 月,已知使用 Meson 交叉文件进行的交叉编译以及基于 crossenv 的交叉编译都可以工作.Conda-forge 使用后一种方法.不使用 crossenv 的交叉编译需要通过 meson-python 将构建选项传递给 meson setup .
已知成功交叉编译 NumPy 的所有发行版都使用 python -m build ( pypa/build ),但使用 pip 也是可能的.以下是这些发行版上 NumPy “构建配方”的链接:
另请参阅 Meson’s documentation on cross compilation ,了解可能需要传递给 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 key issue page
带有“Cross compilation”标签的 set of NumPy issues with the “Cross compilation” label
SciPy 交叉编译需求和问题的跟踪问题: scipy#14812