[fpc-pascal] 64 bit cross binutils on a 32 bit OS

Pierre Free Pascal pierre at freepascal.org
Thu Apr 11 17:53:21 CEST 2013


> On Windows, using FPC 2.7.1, I use:
>  make crossinstall OS_TARGET=win64 CPU_TARGET=x86_64
> 
> But this not works. I always got the error:
> ================================================
> W:/md/dev/freepascal/compiler/2.7.1/compiler/ppc.exe fpmake.pp  -
> FuW:/md/dev/fre
> epascal/compiler/2.7.1/packages/fpmkunit/units_bs/i386-win32 -
> FuW:/md/dev/freepa
> scal/compiler/2.7.1/rtl/units/i386-win32
> Fatal: Can't find unit process used by fpmkunit
> Fatal: Compilation aborted
> make[3]: *** [fpmake] Error 1
> make[3]: Leaving directory `W:/md/dev/freepascal/compiler/2.7.1/packages'
> make[2]: *** [packages_all] Error 2
> make[2]: Leaving directory `W:/md/dev/freepascal/compiler/2.7.1'
> make[1]: *** [build-stamp.x86_64-win64] Error 2
> make[1]: Leaving directory `W:/md/dev/freepascal/compiler/2.7.1'
> make: *** [crossinstall] Error 2
> ================================================

Starting with fpc-2.6.2 release, 
this completes successfully for me:
make distclean crossinstall OS_TARGET=win64 CPU_TARGET=x86_64 PREFIX=e:/pas/fpc-2.7.1

Stating with a 2.7.1 win32 binary:
E:\pas>fpc -iVDW
2.7.1 2013/03/28 2.7.1-r1:24029M
(Meaning that I do have some local modifications, but I doubt those interfere with your problem...)
I get the same success...

Did you use a distclean before the crossinstall?
win32 fpmake.exe generated for native win32 target might be a problem...
I checked, and indeed, if you just do a native install
followed by a crossinstall without a distclean in between, 
you do get
E:/pas/trunk/fpcsrc/compiler/ppc.exe src/fpmkunit.pp  -FuE:/pas/trunk/fpcsrc/rtl/units/i386-win32 -FuE:/pas/trunk/fpcsrc
/packages/paszlib/units/i386-win32 -FuE:/pas/trunk/fpcsrc/packages/fcl-process/units/i386-win32 -FuE:/pas/trunk/fpcsrc/p
ackages/hash/units/i386-win32 -FUunits_bs/i386-win32 -Fu../paszlib/src -Fu../hash/src -Fi../paszlib/src  -Fi../fcl-proce
ss/src/win -Fu../fcl-process/src -Fi../fcl-process/src/win32 -Fi../fcl-process/src/dummy
make[4]: Leaving directory `E:/pas/trunk/fpcsrc/packages/fpmkunit'
E:/pas/trunk/fpcsrc/compiler/ppc.exe fpmake.pp  -FuE:/pas/trunk/fpcsrc/packages/fpmkunit/units_bs/i386-win32 -FuE:/pas/t
runk/fpcsrc/rtl/units/i386-win32
Fatal: Can't find unit process used by fpmkunit
Fatal: Compilation aborted
make[3]: *** [fpmake] Error 1


So the solution to your problem really is
to run a 'distclean' make target before the 'crossinstall' target.

Pierre Muller




More information about the fpc-pascal mailing list