-
Здравствуйте, уважаемые коллеги! Поставил FPC 2.0.0, скачал KOLFORFPC от Thaddy - пример собрал, всё ОК. Далее тут же запускаю сборку снова, линковщик ругается - дескать,
C:\FPC\2.0.0\units\i386-win32\kol\libpKol.a(Kol0s743.o)(.text+0x2e):Kol.pas: undefined reference to `WINDOWS_CLIENTTOSCREEN$HWND$TPOINT$$LONGBOOL'
и так далее. Удаляю все *.a, *.o, *.ppu в каталоге с КОЛ - перекомпиляет и линкует нормально. Убираю смартлинкинг (ключ -CX в fpc.cfg) - всё работает.
Но хочется смартлинк всё-таки!
Никто не в курсе, где чего подкручивать? Ключи Fo, Fu стоят.
С уважением, Иван Кузьмицкий.
-
If all your paths are correct, everything should work. Did you use the latest instructions here?: http://www.thaddy.com/kol_in_fpc_proper.htmIf you compile withe the release settings I suggested, everything should be rebuild. like fpc project1.dpr -dRELEASE and exe should be 40K
-
-
2 Thaddy: Да, конечно, я всё делал по Вашей инструкции. Но дело в том, что мой проект и KOL лежат в разных каталогах. А если лежат в одном, то ребилд происходит успешно. Перечитваю ещё раз Ваш текст, может я чего-то пропустил...
С уважением, Иван
-
It is simple: make shure to add the path to the kol support files (windows.pas etc)the first in the path settings in fpc.cfg
-
Thaddy, а не приведёте ли примерчик строки path с ключом для fpc.cfg - если Вас не затруднит, конечно? Я попробовал разные варианты, например -FoC:\FPC\2.0.0\units\i386-win32\kol (всё лежит в одном каталоге) но ни один не срабатывает.
Вообще, непонятна логика происходящего. Стоит вычистить все *.a, *.o, *.ppu в каталоге с KOL, то линкер отрабатывает отлично.
-
-FuC:\FPC\kol #first in path -FuC:\FPC\units\i386-win32;C:\FPC\units\i386-win32\fcl;C:\FPC\units\i386-win32\rtl
Yse it's worth cleaning everyting
-
Не помогло, к сожалению... Что-то я никак не пойму, в чём дело.
Поставил пути в самое начало, вот цитата из fpc.cfg: # ----------------------- # Set Filenames and Paths # -----------------------
# Both slashes and backslashes are allowed in paths
-Foc:\FPC\kol -Fuc:\FPC\kol -FuC:\FPC\2.0.0\units\i386-win32;C:\FPC\2.0.0\units\i386-win32\fcl;C:\FPC\2.0.0\units\i386-win32\rtl
KOL перекомпилируется нормально, а вот линкер ругается. Вот цитата со второго запуска (первый запуск скомпилировал KOL):
C:\DEV\FPC demo>fpc simple.dpr -dRELEASE Compiling Release Version Free Pascal Compiler version 2.0.0 [2005/05/08] for i386 Copyright (c) 1993-2005 by Florian Klaempfl Target OS: Win32 for i386 Compiling simple.dpr Linking simple.exe C:\FPC\2.0.0\units\i386-win32\delphi\libpKol.a(Kol0s1646.o)(.text+0xe):Kol.pas: undefined reference to `WINDOWS_FREELIBRARY$HINST$$LONGBOOL'
... пропущено ...
simple.dpr(11,1) Error: Error while linking Error: c:\FPC\2.0.0\bin\i386-Win32\ppc386.exe returned an error exitcode (normal if you did not specifiy a source file to be compiled)
Я так понимаю, линковщик не может найти объектные модули, хотя путь указан. Глюк?
Самое интересное, что если запустить fpc с ключиком -B, то KOL перекомпилируется, линковщик тут же находит все объектники и мой проект собирается. Но каждый раз перекомпилировать KOL долго.
С уважением.
-
Блин, ну и дела. Разобрался я всё-таки :)
Оказывается, список путей в fpc.cfg парсится с конца, а не с начала: -Fuc:\FPC\2.0.0/units/$FPCTARGET/ -Fuc:\FPC\2.0.0/units/$FPCTARGET/* -Fuc:\FPC\2.0.0/units/$FPCTARGET/rtl -Fuc:\FPC\2.0.0\units\i386-win32\delphi -Fuc:\FPC\kol
То есть, сначала лезет в текущий каталог, потом в kol, потом в delphi, потом в rtl и т.п.
В такой комбинации всё заработало!
-
Good Job! I will publish it on kol+fpc page.
-
Кстати, эта штука описана в документации, там прямо сказано:
User manual, issue 3.1.2
You can add a directory to the unit search path with the (-Fu, (see page 5.1.3)) option. Every occurrence of one of this options will insert a directory to the unit search path. i.e. the last path on the command line will be searched first.
|