Кросс-компиляция#

Кросс-компиляция — сложная тема, мы лишь добавляем здесь несколько, надеемся, полезных подсказок (пока что). По состоянию на май 2025 года, кросс-компиляция с использованием кросс-файла Meson, а также кросс-компиляция на основе crossenv известно, что работают. Conda-forge использует последний метод. Кросс-компиляция без crossenv требует передачи опций сборки в meson setup через meson-python.

Все дистрибутивы, которые, как известно, успешно кросскомпилируют NumPy, используют python -m build (pypa/build), но с использованием pip для этого также должно быть возможно. Вот ссылки на «рецепты сборки» NumPy в этих дистрибутивах:

Смотрите также Документация Meson по кросс-компиляции чтобы узнать, какие параметры вам может потребоваться передать Meson для успешной кросс-компиляции.

Одна возможная проблема заключается в том, что сборка требует запуска скомпилированного исполняемого файла для определения long double формат для хост-платформы. Это может быть препятствием, поскольку требует crossenv или QEMU для запуска основного (кросс) Python. Чтобы избежать этой проблемы, укажите пути к соответствующим каталогам в вашем кросс-файл:

[properties]
longdouble_format = 'IEEE_DOUBLE_LE'

Пример cross-файла, необходимого для кросс-компиляции NumPy, см. в numpy#288861. Объединяя это, вызов кросс-сборки с таким кросс-файлом выглядит так:

$ python -m build --wheel -Csetup-args="--cross-file=aarch64-myos-cross-file.txt"

Для получения дополнительных сведений и текущего статуса по кросскомпиляции см.: