Могу ли я выполнить кросс-компиляцию (без связывания) с Free Pascal для других платформ?

Я видел, что настроить кросс-компиляцию с помощью Free Pascal можно, но непросто, поскольку в системе должны быть библиотеки целевой ОС.

Но мне нужна только быстрая проверка синтаксиса, чтобы убедиться, что проект можно скомпилировать, связывание исполняемого файла не требуется.

Итак: есть ли параметры компилятора, которые я могу использовать для кроссплатформенной тестовой компиляции (только) с Free Pascal?

В моем случае, прежде чем проверять проект в системе управления версиями, я хотел бы проверить на рабочей станции Windows, может ли компилятор компилироваться для цели Linux или OSX.


person mjn    schedule 26.10.2012    source источник


Ответы (2)


(Обратите внимание, что источником проблемы является не FPC, но Apple больше не выпускает исходный код для своих binutils, в отличие от ранних (ppc) времен OS X, когда была доступна версия cctools)

Да, это возможно. В основном, затем (перекрестно) компилируется на ассемблер и пытается выполнить сборку и компоновку на целевом объекте.

Параметры командной строки, на которые следует обратить внимание:

  • -a не удалять файлы ассемблера
  • -Aas выбрать внешний ассемблер
  • -s, чтобы отложить связывание

Командная строка компоновщика будет записана в файл ppas.bat / sh.

Перенести все сгенерированные файлы ассемблера .s и скрипт компоновщика link.res и ppas.sh в целевую систему и запустить ppas.sh

Теоретически он должен затем ассемблироваться и компилироваться, но на практике вам может потребоваться адаптировать link.res и ppas.sh, чтобы добавить правильные пути поиска. Многие из ранних переносов на новые цели были выполнены таким образом (поскольку первоначальный перенос был сделан до добавления правильной цели в компилятор)

person Marco van de Voort    schedule 26.10.2012
comment
Требуется ли внешняя часть ассемблера, если все, что мне нужно, это просто "компиляция проверки синтаксиса", чтобы увидеть, все ли символы могут быть разрешены и т. Д. (И файлы ассемблера не нужны)? Я мог бы использовать переключатель -s и просто указать целевую платформу, например -Tlinux -Px86_64? - person mjn; 26.10.2012
comment
Полагаю, что так. Я никогда не делал этого только для проверки синтаксиса. - person Marco van de Voort; 28.10.2012

AFAIK, компиляция и связывание приложения с кросс-компилятором - единственный способ по-настоящему проверить ваш проект. Так сегодня работают основные IDE (фоновая компиляция).

Вам просто нужно установить на свой хост-компьютер кросс-компилятор для нужного вам ЦП / ОС.

http://wiki.freepascal.org/Cross_compiling#Host_and_target_on_different_CPUs

person TridenT    schedule 26.10.2012