Cross-Kompilierung#

Die Cross-Kompilierung ist ein komplexes Thema, wir fügen hier (vorerst) nur einige hoffentlich hilfreiche Hinweise hinzu. Seit Mai 2023 ist bekannt, dass die Cross-Kompilierung auf Basis von crossenv funktioniert, wie sie (zum Beispiel) in conda-forge verwendet wird. Die Cross-Kompilierung ohne crossenv erfordert einige manuelle Überschreibungen. Diese Überschreibungen werden durch Übergabe von Optionen an meson setup über meson-python gesteuert.

Alle Distributionen, von denen bekannt ist, dass sie SciPy erfolgreich cross-kompilieren, verwenden python -m build (pypa/build), aber die Verwendung von pip dafür sollte ebenfalls möglich sein. Hier sind Links zu den „Build-Rezepten“ von SciPy auf diesen Distributionen

Siehe auch Mesons Dokumentation zur Cross-Kompilierung, um zu erfahren, welche Optionen Sie möglicherweise an Meson übergeben müssen, um erfolgreich cross-kompilieren zu können.

Ein häufiges Problem ist, dass numpy und pythran die Ausführung von Python-Code benötigen, um ihre Include-Verzeichnisse zu ermitteln. Dies funktioniert oft nicht gut, entweder werden versehentlich die Pakete aus dem Build- (nativen) Python übernommen anstatt dem Host- (Cross-) Python, oder es wird crossenv oder QEMU benötigt, um das Host-Python auszuführen. Um dieses Problem zu vermeiden, geben Sie die Pfade zu den relevanten Verzeichnissen in Ihrer Cross-Datei an.

[constants]
sitepkg = '/abspath/to/host-pythons/site-packages/'

[properties]
numpy-include-dir = sitepkg + 'numpy/core/include'
pythran-include-dir = sitepkg + 'pythran'

Weitere Details und den aktuellen Status bezüglich der Cross-Kompilierung finden Sie unter