[fpc-pascal] cross compiling - easier than expected - wiki needs update?

Bernd prof7bit at googlemail.com
Sun Apr 29 15:01:12 CEST 2012


Hi,

I just thought I kill some time investigating cross compiling from
i386-linux to i386-win32 and hada look at the wiki page
http://wiki.freepascal.org/Cross_compiling

It seems there is some important thing missing, right at the beginning
but I don't know enough about fpcmake to extend the article in a way
that explains in a short sentence what fpcmake's actually does (and
how it does this) and what options are of interest.

Here is what I had installed initially on my Linux-i386 (Xubuntu 11.10)

an fpc checkout from the 2.6 fixes branch
a lazarus checkout from the trunk

For normal compiling (not cross) after updating everything from svn  I
usually just use

in the fpc directory
make clean all
sudo make install

(the fpc.cfg is in /etc and I once created it with the tool that comes
with fpc and never touched it since)

and in the Lazarus directory
make clean lazbuild useride

(without install, just  run Lazarus directly from there)

***

Now I decided to try experimenting with cross compiling to win32,
something I have never done before and expected to be very difficult
to set up. The only problem I had was the wiki page does not mention
with any word that one must first do fpcmake -Ti386-win32

Then it was surprisingly easy:

fpcmake -Ti386-win32
make all OS_TARGET=win32 CPU_TARGET=i386
sudo make crossinstall OS_TARGET=win32 CPU_TARGET=i386

and that was all!

I have also seen mentioning somewhere the fpc.cfg needs to be edited
but my fpc.cfg seemed to already contain the correct $fpctarget
macros. Also it seems there is absolutely no additional configuration
in Lazarus needed, it just worked out of the box immediately on the
first try! All I did was opening a simple project with some database
stuff for sqlite that already used to compile and run on windows, I
just opened the project and set in the project settings:

Code Generation / Target OS: Win32
Build Modes / Macro values: LCLWidgetType: win32

And it immediately worked! It automatically re-compiled all needed LCL
and other packages without changing *any* Lazarus setting at all and
it created a working LCL windows exe!

This is great stuff, I am impressed! I initially prepared for many
frustrating hours experimenting and searching little pieces of
information from all over the web but instead it just worked
immediately! The only thing is the wiki page seems slightly outdated
in a few details regarding Linux->Windows cross compile:

* missing hint for fpcmake
* fpc.cfg probably already ok, no editing here anymore
* no Lazarus config change, no new Lazarus profile, no rebuilding of
Lazarus anymore

maybe this also affects the other cross-compile-combinations (which
are certainly more complicated because of the binutils but maybe also
became easier), but I don't have enough experience with this to feel
confident enough to make changes. Someone else with more routine in
cross compiling should do this.


Bernd



More information about the fpc-pascal mailing list