Конференция "FreePascal" » KOL + FPC смартлинкуется через раз [Win32]
 
  • Stargazer (25.05.05 17:47) [0]
    Здравствуйте, уважаемые коллеги!
    Поставил 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 стоят.

    С уважением,
    Иван Кузьмицкий.
  • Thaddy (26.05.05 20:58) [1]
    If all your paths are correct, everything should work.
    Did you use the latest instructions here?:
    http://www.thaddy.com/kol_in_fpc_proper.htm

    If you compile withe the release settings I suggested, everything should be rebuild. like fpc project1.dpr -dRELEASE and exe should be 40K
  • Thaddy (26.05.05 21:02) [2]
  • Stargazer (26.05.05 22:49) [3]
    2 Thaddy:
    Да, конечно, я всё делал по Вашей инструкции.
    Но дело в том, что мой проект и KOL лежат в разных каталогах.
    А если лежат в одном, то ребилд происходит успешно.
    Перечитваю ещё раз Ваш текст, может я чего-то пропустил...

    С уважением,
    Иван
  • Thaddy (26.05.05 23:54) [4]
    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
  • Stargazer (27.05.05 01:12) [5]
    Thaddy, а не приведёте ли примерчик строки path с ключом для fpc.cfg - если Вас не затруднит, конечно?
    Я попробовал разные варианты, например
    -FoC:\FPC\2.0.0\units\i386-win32\kol (всё лежит в одном каталоге) но ни один не срабатывает.

    Вообще, непонятна логика происходящего.
    Стоит вычистить  все *.a, *.o, *.ppu в каталоге с KOL, то линкер отрабатывает отлично.
  • Thaddy (27.05.05 01:35) [6]
    -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
  • Stargazer (27.05.05 09:43) [7]
    Не помогло, к сожалению...
    Что-то я никак не пойму, в чём дело.

    Поставил пути в самое начало, вот цитата из 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 долго.

    С уважением.
  • Stargazer (27.05.05 14:22) [8]
    Блин, ну и дела.
    Разобрался я всё-таки :)

    Оказывается, список путей в 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 и т.п.

    В такой комбинации всё заработало!
  • thaddy (27.05.05 17:13) [9]
    Good Job!
    I will publish it on kol+fpc page.
  • Stargazer (27.05.05 18:16) [10]
    Кстати, эта штука описана в документации, там прямо сказано:

    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.
 
Конференция "FreePascal" » KOL + FPC смартлинкуется через раз [Win32]
Есть новые Нет новых   [134455   +51][b:0][p:0]