Здравствуйте, Khimik, Вы писали:
K>Я пытаюсь портировать свою программу под Mac (Lazarus), и мне сказали, что нужно выбирать между двумя архитектурами — x86_64 или ARM. Я тут пока ничего не знаю, создалось ощущение что ARM это что-то более современное и продвинутое (в том числе по статье на хабре), но один пользователь написал выбирать x86_64. Можете что-то подсказать?
Нужно скомпилировать 2 версии исполняемого файла проекта (для ARM и Intel) а затем склеить их в один файл. Получится Universal Binary для старых и новых Mac. Компилировать можно на любом Мак, главное чтобы была версия macOS 11 Big Sur или новее.
Вот куски кода для Терминала (можно упаковать в скрипт):
lazbuild --cpu=aarch64 --build-all --recursive MyProject.lpi
strip MyProject
// Затем переименуйте в MyProject_arm64
lazbuild --cpu=x86_64 --build-all --recursive MyProject.lpi
strip MyProject
// Затем переименуйте в MyProject_intel
lipo -create -output MyProject MyProject_intel MyProject_arm64
// Команда lipo склеивает обе версии в единый файл.
Команда strip убирает лишнюю отладочную информацию из исполняемого файла и сильно уменьшит размер исполняемого файла
Когда пользователь на Intel Mac запустит приложение, то macOS автоматически выберет Intel код, а на ARM автоматически выберет arm код.