Вы помните свой первый опыт работы с Паскалем в средней школе? Мог ли ты представить, что он тебе еще когда-нибудь понадобится? Но когда двадцать лет позади, мне нужно отредактировать свежийкод Pascal и запустить его на macOS Sierra. Пойдем.
- Напишите свою любимую программу:
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!