This thread is a summary of intermittent experience over the last year
or so with Lazarus running natively on various platforms. I hope to
cover ARM, PPC, SPARC and (for completeness) x86 on Linux (Debian v5
"Lenny"), possibly also some older Windows OSes on x86 (NT, W2K); I'm
afraid that I don't have an x64 system which I think would cover all
currently-supported CPUs.
Mattias, noting your
0.9.29 with fpc 2.4.0 or higher.
I'll work with sources from svn. This might mean that I'm a day or so
behind in some cases since some of the older machines will take more
than a day doing a full build.
ARM (armel) on Debian "Lenny"
-----------------------------
Debian's transition between arm and armel was a bit painful, so while I
was able to build Lazarus apps about 18 months ago I've since had a bit
of a hiatus. Starting with FPC 2.2.2 binaries I was able to generate a
2.4.0 as below:
-----8<-----
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.
----->8-----
I know that I can do a basic (i.e. without bigide) compile of 0.9.28.2,
except that there's an intermittent problem with this where the compiler
fails with a numeric backtrace, restarting the make picks up where it
left off. I think this is due to the system I'm running only having a
minuscule amount of RAM, but something is not handling that very
gracefully. Jonas has suggested that I update the compiler but I'll try
to get this set of trial builds out of the way first.
0.9.28.2 builds (without bigide) and gives me a runnable Lazarus, I've
not tried building a project. Access violation while exiting- ignoring
that for the moment. 0.9.28.3 behaves the same.
Building 0.9.29 fails early with a consistent fault:
$ make all
make -C lcl all
make[1]: Entering directory `/usr/local/share/lazarus-trunk/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
Compiling lclstrconsts.pas
Writing Resource String Table file: lclstrconsts.rst
Assembling lclstrconsts
Compiling fpcadds.pas
Assembling fpcadds
Compiling lazlinkedlist.pas
Assembling lazlinkedlist
Compiling dynhasharray.pp
Compiling lclproc.pas
Compiling avglvltree.pas
Assembling avglvltree
Compiling fileutil.pas
Compiling masks.pas
Assembling masks
Assembling fileutil
Compiling lcltype.pp
Assembling lcltype
Compiling ./widgetset/wsreferences.pp
Assembling wsreferences
Fatal: Compilation aborted
An unhandled exception occurred at $00086C50 :
EAccessViolation : Access violation
$00086C50
$000F6A30
$00140F5C
$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-trunk/lcl'
make: *** [lcl] Error 2
Since this one IS a consistent error I can run it under gdb:
(gdb) run
Starting program: /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 dynhasharray.pp
Compiling lclproc.pas
Program received signal SIGSEGV, Segmentation fault.
0x00086c50 in ?? ()
(gdb) bt
#0 0x00086c50 in ?? ()
(gdb)
I'm going to leave this until the end of the day in case anybody's got
any comments. Unless anybody's got any better suggestions I will then
apply Jonas's modified syscall.inc to 2.4.0 and then do another build of
0.9.28.3 to see if the couple of niggles are resolved, after that I'll
retry 0.9.29.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus