Процессоры и операционные системы Я создавал инструмент под названием Miruri. Основная идея проста: Предоставьте ему существующий программный проект и целевую платформу и позвольте ему взять на себя как можно большую часть процесса переноса. Репозиторий: https://ги...
Процессоры и операционные системы
Я создавал инструмент под названием Miruri.
Основная идея проста:
Предоставьте ему существующий программный проект и целевую платформу и позвольте ему взять на себя как можно большую часть процесса переноса.
Репозиторий:
https://github.com/yuna-r/miruri
Это все еще альфа-проект, но он дошел до того, что уже может делать некоторые удивительно нетривиальные вещи.
Например, я использовал его для:
портировать код Intel SSE на ARM NEON
собирать двоичные файлы Linux ARM64 с Apple Silicon Mac
создать терминальное приложение Autotools для macOS
возьмите приложение Linux/GNOME Python + GTK и запустите его как приложение macOS.
Последнее меня тоже удивило.
Что Мирури пытается решить
Кросс-компиляция чистого, переносимого проекта C обычно не так уж сложна.
Реальные проекты бывают разными.
Они содержат такие вещи, как:
встроенные функции x86
API-интерфейсы Windows
API-интерфейсы, специфичные для Linux
флаги компилятора, зависящие от архитектуры
фреймворки графического интерфейса платформы
графические API
аудио-серверы
плагины
сгенерированные файлы
пользовательские сценарии сборки
предположения внешнего SDK
Компилятор может сказать вам, что что-то не удалось.
Обычно он не может сказать вам, как должна измениться архитектура проекта, чтобы сделать другую платформу доступной.