[Ecls-list] Help cross-compiling ECL for ARM EABI (was: Can ECL run on the Nokia S60?)

Elliott Slaughter elliottslaughter at gmail.com
Mon Mar 2 23:51:37 UTC 2009

On Mon, Mar 2, 2009 at 1:45 AM, Juan Jose Garcia-Ripoll
<juanjose.garciaripoll at googlemail.com> wrote:
> On Mon, Mar 2, 2009 at 9:06 AM, Elliott Slaughter
> <elliottslaughter at gmail.com> wrote:
>> Well, I just compiled libgc1c2 myself, using the same toolchain and libc6
>> version as I did for ECL, and it still crashes, so I guess we can conclude
>> that the cause of the crash is something else during my build process.
>> Any assistance would still be greatly appreciated.
> ECL has been compiled directly on the ARM in the past, so I would say
> this is not intrinsic to the architecture. The cross-compilation
> process, on the other hand, may have been left behind by current
> improvements in the code.
> One thing that seems to be a must in many ARM environments is to
> disable floating point exceptions completely. There is a flag to do
> so.

Can you tell me what that flag might be?

> Another thing that you mention in the email is that you left the
> default values for the cross-compilation settings and this is not
> really a good guess. Those values are telling the ECL build details
> about the architecture of your system: direction of stack growth, size
> of words and pointers, etc. These things are normally guessed by
> running a program during configuration, but since you are
> cross-compiling this is not an option. However, getting them right is
> critical and putting the wrong values there will produce an useless
> executable.

If I can't cross compile, then as I see it, I have two options: Either
I can compile on the device itself, or I can emulate an ARM CPU on my
x86 machine and pretend that it's compiling on the real thing.

The former is currently blocked by disk space issues: after installing
GCC and company on the device, there is insufficient disk space
remaining to actually compile ECL. I can try to get enough room, but I
don't know how successful I can be in this.

When I try the latter method, using qemu-arm to emulate the machine, I
get the following error during compilation:

;;; Note: Invoking external command:
In function `_start':../sysdeps/arm/elf/start.S:99: undefined
reference to `main'
collect2: ld returned 1 exit status
LAMBDA: Too many arguments to function CONTINUE.
;;;   arm-linux-gnueabi-gcc -o
-L"/home/elliott/src/ecl-9.1.0/build/" "c/main.o" "c/all_symbols2.o"
"liblsp.a" "libeclmin.a"      -leclgmp    -lm   -lgcBroken at
TOP-LEVEL. File: #P"/home/elliott/src/ecl-9.1.0/src/lsp/top.lsp" (Form
#26)No restarts available.
Top level.

Finally, if I can emulate the CPU, is there any way I can configure
with emulation, then use the results from that configure to try and
set up cross compilation again?

Thanks for your help.

Elliott Slaughter

"Any road followed precisely to its end leads precisely nowhere." -
Frank Herbert

More information about the ecl-devel mailing list