交叉编译#

交叉编译是一个复杂的主题,我们暂时只在此处提供一些希望有所帮助的提示。截至 2025 年 5 月,已知使用 Meson 交叉编译文件以及基于 crossenv 的交叉编译都可以正常工作。Conda-forge 使用后一种方法。不使用 crossenv 进行交叉编译需要通过 meson-python 将构建选项传递给 meson setup

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

请参阅 Meson 的交叉编译文档,了解成功交叉编译 NumPy 可能需要传递给 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"

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