[fpc-pascal] Why can't 64bit FPC cross-compile 32bit

Graeme Geldenhuys graeme at mastermaths.co.za
Mon Nov 9 13:49:20 CET 2009

Vincent Snijders wrote:
> Graeme Geldenhuys schreef:
>> Hi,
>> What can the 32bit FPC compiler (currently I run under Linux) 
>> cross-compile to 32bit Windows or 64bit Linux.
> Do you mean that ppcx64 can generate code for win32? I don't think
> that is true.

See the output below. The 32bit Linux FPC can target 32bit & 64bit
platforms. But 64bit Linux FPC cannot target 32bit platforms. The later
can only cross-compile to other 64bit platforms.

$ ppcx64 -i
Free Pascal Compiler version 2.3.1

Compiler Date      : 2009/10/22
Compiler CPU Target: x86_64

Supported targets:
  Linux for x86-64
  FreeBSD for x86-64
  Win64 for x64
  Darwin for x86_64


./ppc386 -i
Free Pascal Compiler version 2.2.5

Compiler Date      : 2009/05/28
Compiler CPU Target: i386

Supported targets:
  GO32 V2 DOS extender
  Linux for i386
  Win32 for i386
  FreeBSD/ELF for i386
  Solaris for i386 (under development)
  Beos for i386 (under development)
  NetBSD for i386 (under development)
  Netware for i386(clib)
  WDOSX DOS extender
  OpenBSD for i386 (under development)
  OS/2 via EMX
  Watcom compatible DOS extenders
  Netware for i386(libc)
  WinCE for i386
  Linux for x64_6432
  Darwin for i386
  Symbian OS for i386

I'm new to supporting multiple compiler versions and now to add
cross-compilers to the mix. I don't know how I am supposed to structure
my directory layout or ~/.fpc.cfg file. Currently I have the following

   |--- bin
   |--- lib
   |--- share
   |--- src
   |--- bin
   |--- lib
   |--- share
   |--- src
   |--- bin
   |--- lib
   |--- share
   |--- src

Example: When I compile a new 64-bit FPC 2.2.5 I do the following.

cd fpc_<ver>/src
make clean PP=/opt/fpc_2.2.5/bin/ppcx64
make all PP=/opt/fpc_2.2.5/bin/ppcx64
make install INSTALL_PREFIX=/opt/fpc_2.2.5 \

I then do similar for other FPC versions too. The only problem being
that the 'bin' directory gets overwritten, so maybe I need to install
into a different directory for each version. Like this:

  INSTALL_PREFIX=/opt/fpc_2.2.5/32bit_windows  <- cross-compiler

  - Graeme -

fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal

More information about the fpc-pascal mailing list