такс, вот что у меня на текущий момент получилось.
скачал исходники fpc 2.0.4. сначала хотел из под wine их при помощи старого fpc (1.9.6) собрать, хотя бы компилятор. увы, make не сработала (давала какой-то expection на каждом файле), видимо wine ей не нравился.
тогда, начитавшись про кросс-компиляцию (ссылки приводил выше), решил попробовать. тут случился первый облом, ибо я скачивал кучу маленьких пакетов с исходными кодами, а из них под линкусом полный пакет не сделать. пришлось качать один большой файл, размером в два раза больше, и содержащим уже ранее скачанные вещи.
вобщем, получил в итоге fpc-2.0.4, проинсталлировал, стал делать компилятор для винды. все довольно просто и быстро получилось, помимо самого компилятора собрал также и RTL под win32. положил все это в сторонку, установил hiasm 3.63b162, затем поставил fpc из выложенного на сайте архива. автоматическое подключение компилятора не прошло, но все по своим местам разложилось. при попытке ручного запуска ../../hiasm fpc.his из папки с компилятором ошибка повторилась, окошко со страшной надписью OLE error 80040154.
чего не хватает думать не стал, прописал руками.
сразу вопрос. батник make.pas все .ppu и .o кладет рядом с собой, в папку компилятора. я как-то привык при установке сразу запускать этот батник, ибо встречал совет по этому поводу, мол в дальнейшем ускорится процесс компиляции из самой оболочки.
но если проигнорировать это и сразу из хасма скомпилировать пустую форму, то полученные юниты кладутся в Elements/Delphi/code/units. так вот какой путь более правильный?
итак, под wine-ом полученная связка работает, пробежался по примерам, вроде все запускаются. попытался сменить fpc на более свежий. поставил новый hiasm, сделал пустую папку, скопировал туда make.bat и make.pas, решив без оболочки запустить и откомпилировать этот пример. то есть подсовывая отсутствующие компоненты по мере необходимости, так как решил, что в сборке fpc есть немного лишнего.
вобщем, запускал, смотрел на ошибки и добавлял файлики. успел добавить
delphicommctrl.inc win32def.inc COMMDLG.PAS kol.pas
richedit.pas SHELLAPI.PAS SHLOBJ.PAS
и тормознулся на этом:
E:\HiAsm162_new\compiler\FPC>fpc make.pas -Sd -FUunits
Free Pascal Compiler version 2.0.4 [2007/07/18] for i386
Copyright (c) 1993-2006 by Florian Klaempfl
Target OS: Win32 for i386
Compiling make.pas
Compiling kol.pas
Compiling RichEdit.pas
Compiling SHELLAPI.pas
Compiling COMMDLG.pas
Compiling SHLOBJ.pas
kol.pas(19692,10) Warning: Function result does not seem to be set
kol.pas(21152,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expected "LPFILETIME"
kol.pas(21158,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expected "LPFILETIME"
kol.pas(21164,51) Error: Incompatible type for arg no. 2: Got "FILETIME", expected "LPFILETIME"
kol.pas(22094,9) Error: Can't assign values to const variable
kol.pas(22096,16) Error: Can't assign values to const variable
kol.pas(22102,33) Warning: Mixing signed expressions and longwords gives a 64bit result
kol.pas(22169,28) Fatal: Syntax error, ";" expected but "(" found
kol.pas(4,52) Fatal: Compilation aborted
да, кстати, fpc.cfg туда же кинул, а в нем были дополнительные опции: -OG2p3 -Xs -Rintel -Sgic -Xs -l -viwn
ну и соответственно вопрос: чего оно хочет?
почесав голову начесал только одну мысль, KOL довольно старый, да еще и видоизмененный, так как старые сборки FPC с наскоку его не принимали. порылся в инете, увидел, что нынешний KOL довольно спокойно переносит FPC, решил попробовать с ним. текущая версия 2.70, скачал, положил рядом с make.pas вместе со всем, что было в комплекте (предварительно все оттуда убрав), и закоментировал {$DEFINE ASM_VERSION} в delphidef.inc. для успешной компиляции самого KOL-а потребовались еще MESSAGES.PAS, richedit.pas, WINDOWS.PAS
пока все, надо дорогую с работы встретить, и пробовать с олученными юнитами остальное.
|