[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:
/opt/maemo/tools/arm-2005q3/bin/../arm-none-linux-gnueabi/libc/lib/crt1.o:
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
"/home/elliott/src/ecl-9.1.0/build/libecl.so"
-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.
SI>

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