[lazarus] cross compile again
LeVA
leva at az.isten.hu
Sun Dec 14 03:18:35 EST 2003
Marco van de Voort írta:
>>Beacuse no one replied, I thought that it might be useful to spend the
>>whole night with googling, and searching the answers for this cross
>>compiling :)
>>Now it somewhat clearer for me, what should I do.
>>I found a new howto, which explains this thing a little bit simpler.
>>Now I realized, that lazarus need these tools (asw, dlltools etc...) to
>>compile the project to win32. I think that those utils will be there,
>>after I compiled my new gcc, as I read it on the web-page (am I right?).
>>My problem is that I can not compile the new gcc(3.3.1).
>
>
> You don't need gcc. You are looking at compiling C programs cross platform with gcc.
>
> You don't have C programs, you have Pascal programs (FPC). So you need a cross pascal
> compiler.
>
> However it happens that FPC can generate code for all operating systems on
> an architecture using one binary. (ppc386 in this case)
>
> What you need are cross binutils. These are on ftp (freepascal.stack.nl), and if
> you need to hand build them, see the script in the fpc source repository (fpc/install/cross)
>
> Then you need to compile the parts of FPC that are OS specific (the libraries) for win32.
> In the same CVS dir (fpc/install/cross) there is script that does just that.
Thanks for the lot of help, now I realized, that I already have those
ldw, asw binaries which are needed by lazarus, because the howto told me
to compile a new binutils. Then I just don't understand why it told me
to compile the gcc... So I've copied those binaries to my $PATH, and set
up lazarus to build to win32, and set up the LCL to win32.
Please allow me to paste the lazarus's output when I try to compile my
project to win32:
-------------###-------------
...
...
...
[TCompiler.Compile] CmdLine="/home/leva/FreePascal/bin/ppc386 -Rintel
-S2cgi -CD -Ch8000000 -OG1p1 -TWin32 -gl -XD -vewnhi -l
-Fu/home/leva/FreePascal/Lazarus/lcl/units/
-Fu/home/leva/FreePascal/Lazarus/lcl/units/win32/
-Fu/home/leva/FreePascal/Lazarus/packager/units/ -Fu.
-o/home/leva/tmp/project1.exe -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.0.10 [2003/06/26] for i386"
TOutputFilter: "Copyright (c) 1993-2003 by Florian Klaempfl"
TOutputFilter: "Hint: Path "/usr/lib/fpc/1.0.10/units/win32/" not found"
TOutputFilter: "Hint: Path "/usr/lib/fpc/1.0.10/units/win32/rtl/" not found"
TOutputFilter: "Target OS: Win32 for i386"
TOutputFilter: "Compiling /home/leva/tmp/project1.lpr"
TOutputFilter: "syswin32.pp(5,1) Hint: Conditional I386 was set at
startup in last compilation of syswin32.pp"
TOutputFilter: "math.pp(6,13) Hint: Conditional I386 was set at startup
in last compilation of math.pp"
TOutputFilter: "Compiling unit1.pas"
TOutputFilter: "Linking /home/leva/tmp/project1.exe"
TOutputFilter: "47 Lines compiled, 1.9 sec"
[TCompiler.Compile] end
NOTE: No debugger defined. Starting program without debugging ...
EXECUTING "/home/leva/tmp/project1.exe"
WorkingDir "/home/leva/tmp/"
[TMainIDE.DoRunProject] END
Xlib: unexpected async reply (sequence 0x1bef4)!
Xlib: unexpected async reply (sequence 0x1c79a)!
Gdk-WARNING **: GdkWindow 0x4a00461 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4a00460 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4a0045f unexpectedly destroyed
Gdk-ERROR **: X connection to :0.0 broken (explicit kill or server
shutdown).
-------------###-------------
As you can see, my lazarus has been closed. After I clicked the Run
button, I could read the messages window, and it told me that, the
"Project "project1" Succesfully built :)". But, right after that, all of
the lazarus's windows closed. I have compiled lazarus by hand, but I'm
using the precompiled version of fpc(ppc386) v1.0.10.
I think I can ignore these lines:
TOutputFilter: "Hint: Path "/usr/lib/fpc/1.0.10/units/win32/" not found"
TOutputFilter: "Hint: Path "/usr/lib/fpc/1.0.10/units/win32/rtl/" not found"
because I have installed those libs to an other directory, and I
specified this in my .fcp.cfg:
-Fu/home/leva/FreePascal/lib/fpc/1.0.10/units/$target
-Fu/home/leva/FreePascal/lib/fpc/1.0.10/units/$target/*
-Fu/home/leva/FreePascal/lib/fpc/1.0.10/units/$target/rtl
So I think lazarus found the win32 libs, after searching in these pathes.
But to take no risk, I have symlinked that win32 dir to /usr/lib/....
directory, and tried to Run the project again, and the same happened:
lazarus has been terminated.
The error messages are not the same every time, so I paste some other
messages as well:
-------------------###-------------------
TOutputFilter: "Linking /home/leva/tmp/project1.exe"
TOutputFilter: "47 Lines compiled, 1.8 sec"
[TCompiler.Compile] end
NOTE: No debugger defined. Starting program without debugging ...
EXECUTING "/home/leva/tmp/project1.exe"
WorkingDir "/home/leva/tmp/"
[TMainIDE.DoRunProject] END
Xlib: unexpected async reply (sequence 0xac4e)!
Xlib: unexpected async reply (sequence 0xcb23)!
Gdk-WARNING **: GdkWindow 0x4a00461 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4a00460 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4a0045f unexpectedly destroyed
Gtk-CRITICAL **: file gtkobject.c: line 1080 (gtk_object_get_data):
assertion `GTK_IS_OBJECT (object)' failed.
Gdk-ERROR **: X connection to :0.0 broken (explicit kill or server
shutdown).
-------------------###-------------------
and another:
-------------------###-------------------
TOutputFilter: "Compiling /home/leva/tmp/project1.lpr"
TOutputFilter: "syswin32.pp(5,1) Hint: Conditional I386 was set at
startup in last compilation of syswin32.pp"
TOutputFilter: "math.pp(6,13) Hint: Conditional I386 was set at startup
in last compilation of math.pp"
TOutputFilter: "Compiling unit1.pas"
TOutputFilter: "Linking /home/leva/tmp/project1.exe"
TOutputFilter: "47 Lines compiled, 1.9 sec"
[TCompiler.Compile] end
NOTE: No debugger defined. Starting program without debugging ...
EXECUTING "/home/leva/tmp/project1.exe"
WorkingDir "/home/leva/tmp/"
[TMainIDE.DoRunProject] END
Xlib: unexpected async reply (sequence 0xbf22)!
Gdk-WARNING **: GdkWindow 0x4e0161b unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01605 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01602 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01540 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e0153f unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e0153e unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e0153d unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01548 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01546 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01547 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01545 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01544 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01542 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01543 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e01541 unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e0153c unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e0153b unexpectedly destroyed
Gdk-WARNING **: GdkWindow 0x4e0153a unexpectedly destroyed
Gtk-CRITICAL **: file gtkobject.c: line 1080 (gtk_object_get_data):
assertion `GTK_IS_OBJECT (object)' failed.
-------------------###-------------------
I'm running Debian/woody, with glibc_2.2.5-11.5, and:
libgtk1.2 1.2.10-11
libgtk2.0-0 2.0.2-5woody1
libglib1.2 1.2.10-4
libglib2.0-0 2.0.1-2
ppc386_1.0.10
lazarus 0.9.0
The binutils that I've compiled to get that asw, and other binaries, is
2.14.
If I'm using the "Run / Build" menu only, then lazarus builds my
project, and I can run the output binary under windows. Is it normal
that the output binary is very big? I mean, there is nothing in my
project, but a plain form, and the windows binary is 3mb ( and under xp,
an ms-dos window pops up with the project, I don't know if this is
normal...).
The bigger problem is, that lazarus terminates when I click Run. Or is
this because Lazarus can not run windows executables, and somewhere in
the options, I must specify i.e. a wine binary?
Is this some kind of bug in lazarus, or this is squarely my fault, or my
system's fault?
Thanks a lot!
Daniel
--
LeVA
More information about the Lazarus
mailing list