Вы помните свой первый опыт работы с Паскалем в средней школе? Мог ли ты представить, что он тебе еще когда-нибудь понадобится? Но когда двадцать лет позади, мне нужно отредактировать свежийкод Pascal и запустить его на macOS Sierra. Пойдем.

  1. Напишите свою любимую программу:
program hello;
begin
  writeln('Hello world!');
end.

2. Установите свежую версию компилятора Free Pascal. Стандартный установщик не работает на macOS Sierra (разумеется, инструменты командной строки XCode уже установлены):

поэтому делаем это через Homebrew:

$ brew install fpc

К счастью, это работает.

3. Попробуйте скомпилировать:

$ fpc hello.pas
Free Pascal Compiler version 3.0.2 [2017/03/21] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Darwin for x86_64
Compiling hello.pas
Assembling (pipe) hello.s
Linking hello
ld: file not found: /usr/lib/crt1.10.5.o
An error occurred while linking
hello.pas(4,25) Error: Error while linking
hello.pas(4,25) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/local/bin/ppcx64 returned an error exitcode

Не совсем то, что вы ожидали, верно? Погуглив, я понял, что большинство библиотек были удалены из /usr/lib в macOS Sierra. Однако этот случай обрабатывается в FPC, поэтому нам просто нужно установить внутреннюю переменную компилятора MacOSXVersionMin на 10.8 (или выше). Для него нет стандартной опции компилятора, но после недолгих поисков в исходниках я нашел решение: установить переменную окружения MACOSX_DEPLOYMENT_TARGET:

$ MACOSX_DEPLOYMENT_TARGET=10.12 fpc hello.pas
Free Pascal Compiler version 3.0.2 [2017/03/21] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Darwin for x86_64
Compiling hello.pas
Assembling (pipe) hello.s
Linking hello
5 Tlines compiled, 0.1 sec

И, наконец, это работает:

$ ./hello
Hello world!