Кросс-компиляция#
Кросс-компиляция — сложная тема, мы лишь добавляем здесь несколько, надеемся, полезных подсказок (пока что). По состоянию на май 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"
Для получения дополнительных сведений и текущего статуса по кросскомпиляции см.:
Состояние кросскомпиляции в Python: страница ключевой проблемы pypackaging-native
Отслеживание проблемы для потребностей и вопросов кросс-компиляции SciPy: scipy#14812