$ fpc dem.pas -Twin32 Error: Illegal parameter: -Twin32 Error: /usr/local/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)
ppcx64 не может собирать в 32bit, а ppc386 не может в 64bit. Для начала тебе нужно собрать ppc386 для своей платформы, т.е. он будет 64'битным, но компилить сможет в 32 (только в 32). Вот такие чудеса :-).
В Linux64 (как и в win64) прекрасно будет работать нативный компилятор для i386. Если есть такой файл (ppc386), с ним будет куда меньше хлопот. В противном случае, могут быть проблемы (в виде поиска кросс-утилит для компиляции из x86_64 в x86, тогда как с такой задачей легко справятся и обычные утилиты).
2daesher - с 2-мя компиляторами неудобно работать в lazarus, он просто не поддерживает такой режим. Нужно собирать натив + кросс.
Кстати очень многие тонкости кросскомпиляции (именно для винды) нигде не описываются. Например какие нужны внешние утилиты для win x86_64.
Опишу подробнее. Проект freepascal собирает fpc для винды так: win32 - native, win64 - cross (т.е. 32->64). Причём пакет с cross компилятором ставится в папку к 32-битному компилятору и содержит ОДИН exe-шник (собственно сам кросс компилятор), и никаких cross bin utils, т.е. ни ассемблера ни линковщика ни упаковщика библиотек, при этом вполне себе собирает 64-битные приложения в 32битном окружении. (как это вообще взможно???)
Проект lazarus собирает fpc для win64 как native и в стабильных версиях там тоже отсутствуют ассемблер и линковщик (как это работает я тоже не понимаю), но в ночных сборках эти приложения присутствуют.
Дока по сборке кросскомпилятора нам твёрдо говорит, что для его сборки и функционирования нам нужны bin утилиты целевой ОС. Как это сочетается с отсутствием оных в оф. сборке fpc (cross win32 to 64) не совсем понятно.