Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблема компиляции в macOS 15.4: сборка не выполняется

Delphi , Программа и Интерфейс , IDE и Компилятор

 

Введение

С выходом macOS 15.4 (Sequoia) многие разработчики, использующие Free Pascal и Lazarus, столкнулись с проблемами при компиляции проектов. В этой статье мы разберем причины возникновения ошибок, предложим рабочие решения и альтернативные подходы для продолжения разработки на платформе macOS.

Основные симптомы проблемы

После обновления до macOS 15.4 пользователи начали сообщать о следующих ошибках:

  1. Ошибка линковки: -macosx_version_min has been renamed to -macos_version_min
  2. Критическая ошибка: ld: Assertion failed: (false && "Malformed method list")
  3. Проблемы с ресурсами: no platform load command found in ... assuming: macOS
  4. Ошибки при сборке RTTI: .cfi_startproc was here

Пример лога ошибки:

Error: ld: Assertion failed: (false && "Malformed method list"), function getMethods, file ObjC.cpp, line 150.
An error occurred while linking
Error: Error while linking

Причины возникновения проблем

Основная причина неполадок - изменения в инструментах разработки Apple:

  1. Xcode 16.3: В новой версии изменились требования к линковке и обработке ресурсов
  2. Переименование параметров: Apple изменила название ключевого параметра -macosx_version_min на -macos_version_min
  3. Новые требования к метаданным: macOS 15.4 требует более строгого соблюдения форматов метаданных в исполняемых файлах

Решения проблемы

1. Использование параметра -WM

Добавьте в настройки проекта (Project Options > Compiler Options > Custom Options > Conditionals):

If TargetOS = 'darwin' then
begin
  CustomOptions += '-WM10.9';
end;

Или для всех проектов добавьте в /etc/fpc.cfg:

#ifdef cpuaarch64
#IFDEF Darwin
 -WM10.15
#ENDIF
#endif

2. Откат Xcode Command Line Tools

  1. Скачайте Xcode 16.2 с официального сайта Apple
  2. Установите пакет командной строки
  3. Убедитесь, что в терминале выполняется правильная версия: bash xcode-select -p

3. Использование FPC trunk

Установите последнюю версию FPC из репозитория:

  1. В fpcupdeluxe выберите "FPC trunk"
  2. Отключите опцию "use jobs for gnu make" в настройках
  3. Выполните установку

4. Сборка для x86_64

Если возможно, временно переключитесь на сборку для архитектуры x86_64:

program Project1;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Classes;
begin
  writeln('Hello, world!');
end.

Альтернативные решения

1. Использование внешнего ассемблера

Хотя в текущей версии FPC это сложно реализовать, можно попробовать:

  1. Установить nasm или другой совместимый ассемблер
  2. Настроить FPC на использование внешнего ассемблера через параметры компилятора

2. Ручная обработка ресурсов

Для проектов с ресурсами можно попробовать:

  1. Отключить автоматическую обработку ресурсов
  2. Создавать ресурсы вручную с помощью инструментов macOS
  3. Подключать их через отдельные инструкции

Пример кода без автоматической обработки ресурсов:

program ManualResourceDemo;
{$mode objfpc}{$H+}
uses
  Classes, SysUtils;

begin
  // Здесь можно вручную загружать необходимые ресурсы
  WriteLn('Приложение с ручным управлением ресурсами');
end.

Рекомендации для разработчиков

  1. Отслеживайте обновления: Следите за изменениями в официальном репозитории FPC
  2. Тестируйте на разных версиях: По возможности проверяйте сборку на нескольких версиях macOS
  3. Используйте системы контроля версий: Это позволит быстро откатиться при возникновении проблем
  4. Сообщайте о багах: Если вы обнаружили проблему, создайте отчет в баг-трекере FPC

Пример рабочего конфига для macOS 15.4

Для проектов, которые должны работать на macOS 15.4, можно использовать следующий подход:

program MacOSApp;
{$mode objfpc}{$H+}
{$IFDEF DARWIN}
  {$IFDEF CPUAARCH64}
    {$LINKFRAMEWORK Cocoa}
    {$MINSTACKSIZE 16384}
    {$MAXSTACKSIZE 65536}
    {$PACKRECORDS C}
  {$ENDIF}
{$ENDIF}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Classes, CocoaAll;

begin
  // Инициализация приложения
  WriteLn('Приложение успешно запущено на macOS 15.4');
end.

Заключение

Проблемы с компиляцией в macOS 15.4 носят временный характер и связаны с изменениями в инструментах разработки Apple. Наиболее стабильными решениями на данный момент являются:

  1. Использование параметра -WM для указания версии macOS
  2. Откат Xcode Command Line Tools до версии 16.2
  3. Переход на FPC trunk для получения последних исправлений

Разработчики Free Pascal уже работают над исправлениями, и в ближайших версиях проблемы должны быть полностью решены. Следите за обновлениями компилятора и среды разработки, чтобы всегда иметь актуальные исправления.

Для оперативного получения информации о проблеме и ее решении вы можете отслеживать issue #41570 в официальном репозитории Lazarus.

Создано по материалам из источника по ссылке.

Проблема компиляции в macOS 15.4 связана с изменениями в инструментах разработки Apple, вызывающими ошибки при сборке проектов на Free Pascal и Lazarus.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: IDE и Компилятор ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-04 06:56:35/0.015583038330078/0