Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
Show quoted text 8 lines
Maybe you updated your fpc and forgot a make clean all?
Mattias

Mailing lists / lazarus / 2003-12
15 messages · 5 people ·
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
Maybe you updated your fpc and forgot a make clean all?
Mattias
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
Peter Vreman �rta:
I have those utils, because previously I could make win32 binaries with lazarus and fpc1.0.10. I have these binaries:
i686-pc-mingw32-addr2line i686-pc-mingw32-dlltool i686-pc-mingw32-objcopy i686-pc-mingw32-size
i686-pc-mingw32-ar i686-pc-mingw32-dllwrap i686-pc-mingw32-objdump i686-pc-mingw32-strings
i686-pc-mingw32-as i686-pc-mingw32-ld
i686-pc-mingw32-ranlib i686-pc-mingw32-strip
i686-pc-mingw32-c++filt i686-pc-mingw32-nm
i686-pc-mingw32-readelf i686-pc-mingw32-windres
and all of them are symlinked to my $PATH. The ld is linked as ldw, and the as is linked as asw. Few days ago, with fpc1.0.10, and cvs lazarus, I could build to all platforms with those tools.
Now I've upgraded to fpc1.9.1 (because I want to use the fpimage feature), and now I have this problem: when I compile lazarus/lcl with OS_TARGET=win32, it can not compile linux nor win32.
I'm not quite understand what you're saying unfortunately :) I'm not that guru in this. Do I have to use the old 1.0.10fpc if I want to make win32 binaries, or I can use 1.9.1 too? And if I can use the 1.9.1, do I have to compile my own win32 units, or I can use these: ftp://gd.tuwien.ac.at/languages/pascal/fpc/snapshot/v11/win32-i386/
Are these for fpc1.9.1? Or it doesn't matter? I can not compile my own win32 units because of the following compilation errror:
(~/FreePascal/src/fpc)-$ make clean
(~/FreePascal/src/fpc)-$ make OS_TARGET=win32 all
...
....
.....
make[4]: Entering directory `/home/leva/FreePascal/src/fpc/rtl/win32' as -o wprt0.o wprt0.as
wprt0.as: Assembler messages:
wprt0.as:29: Error: cannot represent relocation type BFD_RELOC_RVA wprt0.as:31: Error: cannot represent relocation type BFD_RELOC_RVA wprt0.as:32: Error: cannot represent relocation type BFD_RELOC_RVA wprt0.as:36: Error: cannot represent relocation type BFD_RELOC_RVA wprt0.as:45: Error: cannot represent relocation type BFD_RELOC_RVA make[4]: *** [wprt0.o] Error 1
make[4]: Leaving directory `/home/leva/FreePascal/src/fpc/rtl/win32' make[3]: *** [rtl] Error 2
make[3]: Leaving directory `/home/leva/FreePascal/src/fpc/compiler' make[2]: *** [cycle] Error 2
make[2]: Leaving directory `/home/leva/FreePascal/src/fpc/compiler' make[1]: *** [compiler_cycle] Error 2
make[1]: Leaving directory `/home/leva/FreePascal/src/fpc' make: *** [build-stamp.win32] Error 2
What does this mean? I think that would be better, if I could use my own compiled win32 units, instead of the precompiled ones. But how can I compile them?
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
Mattias Gaertner �rta:
Ok! Thank you. Then I'll stop posting with this subject from now, and I'll wait for the upcoming changes. Hope that will be working for me too.
Daniel
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
LeVA �rta:
To be more clear:
I must choose:
a.) I'm compiling lazarus with make clean all, and run it, and build my projects to linux (then no win32 support)
OR
b.) I'm compiling lazarus with make clean all; cd lcl; make OS_TARGET=win32, and run it, and build my projects to win32 (then no linux support)
I want both of them :)
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
Explaination:
1.9.1 also uses 'as' and 'ld' for assembler and linker instead of 'asw' and 'ldw'.
IOW: There is no difference anymore between targets wrt ppu file exenstion and naming of the units.
Solution:
For make add "BINUTILSPREFIX=i686-pc-mingw32-" to the commandline.
For a stanalone compile (or from lazarus) add -XPi686-pc-mingw32- to the commandline or add the following lines to fpc.cfg
#ifndef VER1_0
#ifdef WIN32
-XPi686-pc-mingw32-
#endif
#endif
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
LeVA �rta:
Sorry but I can't stand :). I compiled fpc1.9.1 like this:
cd src/fpc
make clean
make all
export PREFIX=/home/leva/FreePascal/
make install
make BINUTILSPREFIX="i686-pc-mingw32-" OS_TARGET=win32 install
Now I have these dirs:
~/FreePascal/lib/fpc/1.9.1/units/linux
~/FreePascal/lib/fpc/1.9.1/cross/i386-win32/units
~/FreePascal/lib/fpc/1.9.1/cross/i386-win32/bin
Finally I have the win32 units compiled for 1.9.1. I could be happy :) but I'm not. After recompiling lazarus:
cd lazarus
make clean
make all OPT="-dUseFPImage"
cd lcl
make OS_TARGET=win32
I start lazarus, and create a brand new project. With a plain form. I set the TargetOS to win32, and the LCL type to win32. Run/Build All, and it says Succesfully compiled. Wow, it worked!
Now I set the TargetOS to linux, and the LCL type to gtk. Run/Build All, and it says:
[TCompiler.Compile] CmdLine="/home/leva/FreePascal/bin/ppc386 -Rintel -S2cgi -CD -Ch8000000 -OG1p1 -TLinux -gl -XD -vewnhi -l -Fu/home/leva/FreePascal/lazarus/lcl/units/
-Fu/home/leva/FreePascal/lazarus/lcl/units/gtk/
-Fu/home/leva/FreePascal/lazarus/packager/units/ -Fu. -dLCL /home/leva/tmp/project1.lpr"
TOutputFilter: "Hint: Start of reading config file /home/leva/.fpc.cfg" TOutputFilter: "Hint: End of reading config file /home/leva/.fpc.cfg" TOutputFilter: "Free Pascal Compiler version 1.9.1 [2003/12/19] for i386" TOutputFilter: "Copyright (c) 1993-2002 by Florian Klaempfl" TOutputFilter: "Hint: Path "/usr/lib/fpc/1.9.1/units/linux/" not found" TOutputFilter: "Hint: Path "/usr/lib/fpc/1.9.1/units/linux/rtl/" not found" TOutputFilter: "Target OS: Linux for i386"
TOutputFilter: "Compiling /home/leva/tmp/project1.lpr" TOutputFilter: "Fatal: Can't find unit INTERFACEBASE" [TMainIDE.DoOpenMainUnit] A ProjectLoading=FALSE MainUnitID=0
Can't find that interfacebase unit. But it's here:
~/FreePascal/lazarus/lcl/include/interfacebase.inc ~/FreePascal/lazarus/lcl/interfacebase.pp
~/FreePascal/lazarus/lcl/units/interfacebase.o
~/FreePascal/lazarus/lcl/units/interfacebase.ow
~/FreePascal/lazarus/lcl/units/interfacebase.ppu
~/FreePascal/lazarus/lcl/units/interfacebase.ppw
What else I need? The interfacebase unit is there, and lazarus or fpc can't find it. Finaly I got the fpc1.9.1 working with win32, and now I can not build my project to linux... :)
My ~/.fpc.cfg:
-Fu/home/leva/FreePascal/lib/fpc/$version/units/$target -Fu/home/leva/FreePascal/lib/fpc/$version/units/$target/* -Fu/home/leva/FreePascal/lib/fpc/$version/units/$target/rtl #-Fu/home/leva/FreePascal/lazarus/lcl/units
#-Fu/home/leva/FreePascal/lazarus/lcl/units/*
#-Fu/home/leva/FreePascal/lazarus/lcl/units
#-Fu/home/leva/FreePascal/lazarus/lcl/units/gtk
#-Fu/home/leva/FreePascal/lazarus/lcl/units/win32
#ifndef VER1_0
#ifdef WIN32
-Fu/home/leva/FreePascal/lib/fpc/1.9.1/cross/i386-win32/units -Fu/home/leva/FreePascal/lib/fpc/1.9.1/cross/i386-win32/units/* -Fu/home/leva/FreePascal/lib/fpc/1.9.1/cross/i386-win32/units/rtl -XPi686-pc-mingw32-
#endif
#endif
Can somebody help me?
Thanks!
Daniel
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
fpc 1.9.1. doesn't call asw and ldw, but as and ld, unless ypu tell differently.
With fpc 1.9.1 I use the XPi686-pc-mingw32- option.
make OPT="-XPi686-pc-mingw32-"
make sure these binaries are in your path. If not do make OPT="-XPi686-pc-mingw32- -FD/path/to/the/binutils"
wrong as called. see above.
Also be aware you only can hae one set of lcl units present at the time, because compiling for win32 overwrites the linux lcl units.
HTH,
Vincent .
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
Vincent Snijders �rta:
I didn't understand that from what Mattias said. I'm trying realy :) but I'm not that clever, and guru in this like you guys. What you said is exactly what my problem is. And now I understand what Mattias said about the separate directories for the units.
Ok, realy, now it is clear. Realy... :)
Thanks for all the help, I realy appreciate your work, and kindness.
Thanks again!
Daniel
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
You need a cross compiled as and ld with target that supports win32. You are now trying to use win32(=pecoff) .o files with the linux linker that only supports ELF .o files.
Note: The compile itself can read .ppu files from multiple platforms, but the assembler and linker not. The assembler and linker are external applications from GNU binutils.
LeVA �rta: It seems that lazarus works fine, if I skip the cd lazarus/lcl; make…
This sounds like you are compiling win32 sources with the dos assembler.
_always_ keep track of what binutils you are using if you have problems
(make, as,ar,ld)
Probably you installed a full DOS/WIN build, and now the binutils clash. (since 1.9.x combined-in-one-directory dos/win installs are not possible anymore like this)
copy asw.exe as.exe
copy ldw.exe ld.exe
copy arw.exe ar.exe
in the appropiate directory (which will break your dos building)
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
LeVA �rta:
It seems that lazarus works fine, if I skip the cd lazarus/lcl; make OS_TARGET=win32 part of the compilation. I'm doing this because I must build my projects to win32 too. So if I compile lazarus with make clean all, and run it, it works fine. It can compile my projects. After compiling the lcl to win32, and run lazarus, it can not build to linux nor to win32. When trying to compile to linux, it says that it can not find the INTERFACEBASE unit, and when trying to compile to win32, it says that:
TOutputFilter:
"/home/leva/FreePascal/lib/fpc/1.9.1/units/win32/rtl/wprt0.o: file not recognized: File format not recognized"
Is this beacause of the 1.9.1 fpc? With 1.0.10 it worked fine, but I didn't try if it works with it right now, because I need the -dUseFPImage option, and it doesn't work with older fpcs. I'm getting the win32 units daily from here:
ftp://gd.tuwien.ac.at/languages/pascal/fpc/snapshot/v11/win32-i386/
These are precompiled. I got a bad feeling about these units are not for the 1.9.1 version of fpc. Am I right?
I tried to compile the units (1.9.1) by hand:
cd src/fpc; make clean; make OS_TARGET=win32 all
I get this error:
make[4]: Entering directory `/home/leva/FreePascal/src/fpc/rtl/win32' as -o wprt0.o wprt0.as
wprt0.as: Assembler messages:
wprt0.as:29: Error: cannot represent relocation type BFD_RELOC_RVA wprt0.as:31: Error: cannot represent relocation type BFD_RELOC_RVA wprt0.as:32: Error: cannot represent relocation type BFD_RELOC_RVA wprt0.as:36: Error: cannot represent relocation type BFD_RELOC_RVA wprt0.as:45: Error: cannot represent relocation type BFD_RELOC_RVA make[4]: *** [wprt0.o] Error 1
make[4]: Leaving directory `/home/leva/FreePascal/src/fpc/rtl/win32' make[3]: *** [rtl] Error 2
make[3]: Leaving directory `/home/leva/FreePascal/src/fpc/compiler' make[2]: *** [cycle] Error 2
make[2]: Leaving directory `/home/leva/FreePascal/src/fpc/compiler' make[1]: *** [compiler_cycle] Error 2
make[1]: Leaving directory `/home/leva/FreePascal/src/fpc' make: *** [build-stamp.win32] Error 2
Can you tell me please what is wrong with this? Is this the ususal method of compiling the win32 units (make OS_TARGET=win32 all)?
Thanks!
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
I thought Mattias explained quiete well.
Please, read Mattias's mail from 12:29 today.
Is there anything you don't understand?
You have to recompile your LCL for linux again, because when you compiled for win32 you overwrote your existing LCL units for linux. (And if you want to use win32 again, recompile the LCL again.
HTH,
Vincent.
Hi! I know there was a similar topic on this mailing list, but I forgot what to do when…
fpc below 1.9 (e.g. 1.0.x) created .ppw files for the win32 target and .ppu for linux. That's why you can to put them both into one directory. OTOH fpc 1.9+ creates .ppu files for both, so you need to split up. That's what vincent suggested in the
feature request: compiled units in target dependantdirectory thread.
This will be done in a few days, as soon as everyone agree on it.
But this solution will only handle the LCL. For your programs it means you need also some macros for the unit output dir. This will be described in the wikis. Hopefully in a few days.
Mattias
Hi!
I know there was a similar topic on this mailing list, but I forgot what to do when lazarus complains about that interfacebase unit. The maillist archive is still .... So I'm asking
You to help me out with this:
TOutputFilter: "Fatal: Can't find unit INTERFACEBASE"
In my ~/.fpc.cfg:
-Fu/home/leva/FreePascal/lib/fpc/$version/units/$target -Fu/home/leva/FreePascal/lib/fpc/$version/units/$target/* -Fu/home/leva/FreePascal/lib/fpc/$version/units/$target/rtl
In lazarus/Run/Compiler options I have no other units defined. Hope that someone still remember this, and can help me.
Thanks!
Mattias Gaertner �rta:
Unfortunately no. I have patched my fpc tomorrow morning, and then updated lazarus from cvs, and recompiled it (btw the 'Edit' menu entry in the 'Main Menu's popup menu is great, thanks!). I know that I've deleted my ~/.lazarus dir yesterday, and maybe there were some settings in it, which is needed right now, but I can not recall them. And I can not remember how to fix this either. Now that's the misfortune...
Daniel