reckfellENGINE

Кросс-компиляция iOS: требования Linux toolchain

Параметры cross-ветки, обязательный Swift и границы проверенной поддержки.

На этой странице

Текущие build-скрипты распознают кросс-компиляцию iOS через OSXCROSS_IOS. Это включает ветку конфигурации, но не устанавливает toolchain и не подтверждает работоспособность сборки на Linux. Если нужен готовый шаблон без сопровождения собственного toolchain, используйте сборку на macOS.

Что требуется от toolchain

Работайте в Source, рядом с SConstruct. Кроме Python 3.9+ и SCons 4.4+, нужны согласованные Apple SDK, C/C++ и Swift-инструменты:

НастройкаЧто ожидает текущая сборка
OSXCROSS_IOSПеременная окружения: достаточно наличия, даже пустое значение включает ветку. Не задавайте её на обычной нативной сборке macOS.
APPLE_TOOLCHAIN_PATHКаталог с usr/bin, содержащим необходимые compiler, archive и link tools. Без явного пути helper пытается вызвать xcode-select.
APPLE_SDK_PATHКаталог соответствующего SDK, а не архив. Без явного пути helper вызывает xcrun.
apple_target_tripleПрефикс имён инструментов, включая завершающий дефис, если он есть в именах. Это не Swift target и не флаг clang -target.
SWIFT_COMPILERЯвный путь к исполняемому на Linux swiftc, способному собирать Apple target с нужным SDK. В cross-ветке автоматического выбора Swift нет.

Скрипт ищет ${apple_target_triple}clang, clang++, ar, ranlib и libtool под APPLE_TOOLCHAIN_PATH/usr/bin. Наличие только clang недостаточно. iOS SCsub всегда подключает Swift-исходники, общий SwiftUI-контроллер и генерацию заголовка Swift→Objective-C. Swift запускается в режиме -swift-version 6 с C++ interop; для устройства target имеет вид arm64-apple-ios15.0, для симулятора — arm64-apple-ios15.0-simulator либо x86_64-apple-ios15.0-simulator.

Старый рецепт «извлечь SDK и собрать cctools» не обеспечивает эту цепочку целиком. Не скачивайте случайный SDK и не считайте macOS-бинарник swiftc исполняемым на Linux. Используйте SDK и инструменты на условиях их поставщиков; эта инструкция не делает вывода о праве на их распространение.

Параметры вызова

После самостоятельной подготовки и проверки toolchain передайте пути явно. Ниже схема команды, а не готовый установщик: замените все /absolute/... и префикс реальными значениями. Если инструменты называются просто clang, ar и т. д., передайте пустой apple_target_triple.

Командная строка
export OSXCROSS_IOS=1
scons platform=ios target=template_release arch=arm64 simulator=no APPLE_TOOLCHAIN_PATH="/absolute/toolchain" APPLE_SDK_PATH="/absolute/iPhoneOS.sdk" SWIFT_COMPILER="/absolute/swiftc" apple_target_triple="your-tool-prefix-" -j4

Сначала получите библиотеку bin/libreckfell…a без упаковки. Для debug замените target на template_debug. Для симулятора одновременно замените simulator=yes, SDK на iPhoneSimulator и при необходимости архитектуру; менять только arch нельзя. x86_64 без симулятора отклоняется конфигуратором. В симуляторе текущая сборка отключает Metal и Vulkan.

Где заканчивается проверка

ОшибкаПричина или следующий шаг
Не найден xcode-select/xcrunНе передан явный toolchain/SDK. Эти helpers рассчитаны на macOS.
Swift compiler path is not setНе задан SWIFT_COMPILER. Одного OSXCROSS_IOS недостаточно.
Swift не запускается или не находит Apple-модульПроверьте host-формат исполняемого файла, поддерживаемый target, SDK и Swift-зависимости. Не подменяйте это проверкой clang --version.
Найдена .a, но упаковка не работаетgenerate_bundle=yes — отдельный этап; упаковщик использует lipo, шаблон Xcode и зависимости frameworks. Наличие архиватора не гарантирует их доступность.
Библиотеки получены, но игра не запускаетсяПеренесите результат в цепочку Xcode/export и отдельно проверьте slices, подпись, устройство и рендерер.

C# по умолчанию выключен; добавление module_mono_enabled=yes не заменяет managed/AOT-публикацию. На этой странице проверена логика конфигурации по исходникам, но нет проверенного сквозного рецепта Linux→iOS: compiler, Swift, упаковка, экспорт и устройство не запускались. Не используйте наличие OSXCROSS_IOS как обещание поддержанной готовой сборочной среды.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.