[fpc-devel] Building and running FPC natively on ARM under Debian "Lenny"

Mark Morgan Lloyd markMLl.fpc-devel at telemetry.co.uk
Tue Oct 5 10:05:34 CEST 2010


Mark Morgan Lloyd wrote:

> I can confirm that I can build FPC 2.4.0 to run under Debian "Lenny" on 
> an ARM-based system (Cisco/Linksys NSLU2 "Slug") using
> 
> make 'NOGDB=1' 'OPT=-dFPC_ARMEL -CfSOFT' all
> 
> This appears to be OK to the extent that it can compile Lazarus 
> 0.9.28.3, although my initial attempt ("make all") bombed but for some 
> reason "make 'OPT=-vt' all" was OK.
> 
> If starting with a binary of 2.2.2 it's necessary first to generate 
> 2.4.0 using 'OPT=-CfSOFT'. Obviously the amount of memory limits 
> compilation and in particular linkage speed. I've not tried later 
> versions yet.

When running 2.4.0 on an ARM system (Debian v5 "Lenny", armel) with 
limited memory (32Mb RAM + 768Mb swap) and using it to compile a large 
project (Lazarus 0.9.28.2) I'm seeing intermittent failures which go 
away if the make is restarted. I've not seen this running on other 
platforms, and I don't believe it is a problem in the Lazarus sources 
since the build will eventually complete giving me runnable code.

The output typically looks something like this, although I don't think 
it always fails at the same point:

$ make all
make -C lcl all
make[1]: Entering directory `/usr/local/share/lazarus-stable/lcl'
/bin/rm -f units/arm-linux/alllclunits.ppu
/bin/mkdir -p units/arm-linux
/usr/local/bin/ppcarm -gl -Fu. -Funonwin32 -Fuforms -Fuwidgetset 
-Fu/usr/local/lib/fpc/2.4.0/units/arm-linux/rtl -Fiinclude -FE. 
-FUunits/arm-linux -darm alllclunits.pp
Free Pascal Compiler version 2.4.0 [2010/08/21] for arm
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Linux for ARMEL
Compiling alllclunits.pp
Compiling lclversion.pas
Assembling lclversion
..
Assembling postscriptprinter
Compiling postscriptcanvas.pas
Compiling postscriptunicode.pas
Fatal: Compilation aborted
An unhandled exception occurred at $00033B60 :
EInOutError : File not found
   $00033B60
   $000F6A30
   $0011A744
   $000FA588
   $000F4F20
   $00140A14
   $0011FF78
   $0013648C
   $0013FDA0
   $00140950
   $0011FF78
   $0013648C
   $0013FDA0
   $00140950
   $0011FF78
   $00024370
   $00008304

make[1]: *** [alllclunits.ppu] Error 217
make[1]: Leaving directory `/usr/local/share/lazarus-stable/lcl'
make: *** [lcl] Error 2

This is not immediately reproducible, so I can't simply rerun the 
compiler using gdb to get a backtrace. Is there an easy way to make 
sense of those numbers?

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-devel mailing list