I made three different compilation attempts. Hopefully one of them will give us a lead as to what to try next.<br><br>When compiling with ./configure --host=armel --build=armel --with-fpe=no , I get the following error:<br>
<br>if [ -f CROSS-COMPILER ]; then \<br> touch ecl_min; \<br> else \<br> gcc -o ecl_min cinit.o c/all_symbols.o -L./ libeclmin.a -leclgmp -lm -lgc;\<br>
fi<br>libeclmin.a(print.o): In function `edit_double':/home/elliott/src/ecl-9.1.0-e/src/c/print.d:513: undefined reference to `isfinite'<br>libeclmin.a(number.o): In function `ecl_make_singlefloat':/home/elliott/src/ecl-9.1.0-e/src/c/number.d:158: undefined reference to `isfinite'<br>
:/home/elliott/src/ecl-9.1.0-e/src/c/number.d:158: undefined reference to `isfinite'<br>libeclmin.a(number.o): In function `ecl_make_doublefloat':/home/elliott/src/ecl-9.1.0-e/src/c/number.d:181: undefined reference to `isfinite'<br>
:/home/elliott/src/ecl-9.1.0-e/src/c/number.d:181: undefined reference to `isfinite'<br><br><br>Strangely enough, how far I get in the compilation process is
determined by what host and build settings I use. If instead I choose
arm-linux-gnueabi, which is what dh_make would have chosen, I get the following. (For some reason, I don't appear to have gdb installed on the emulator, so I can't really give you more information that this, although I suppose I could try reinstalling the SDK if this seems important.)<br>
<br>if [ -f CROSS-COMPILER ]; then \<br> ./CROSS-COMPILER compile; \<br> else \<br> ECLDIR=`pwd`/ ./ecl_min compile; \<br> fi<br><br>Internal or unrecoverable error in:<br>Got signal before environment was installed on our thread.<br>
[22: Invalid argument]<br>/bin/sh: line 4: 10213 Aborted ECLDIR=`pwd`/ ./ecl_min compile<br><br><br>Finally, I managed to compile on the device itself (after fighting to get enough room to fit gcc), but the compiled binary crashed with the error "Illegal instruction". I have attached a gdb backtrace, in case you can make sense of it:<br>
<br>/media/mmc2 # gdb ecl<br>GNU gdb 6.8-debian<br>This GDB was configured as "arm-linux-gnueabi"...<br>(gdb) run<br>Starting program: /usr/bin/ecl<br>[Thread debugging using libthread_db enabled]<br>[New Thread 0x4001fc40 (LWP 9556)]<br>
<br>Program received signal SIGILL, Illegal instruction.<br>[Switching to Thread 0x4001fc40 (LWP 9556)]<br>0x4026a138 in __sigsetjmp () from /lib/libc.so.6<br>(gdb) where<br>#0 0x4026a138 in __sigsetjmp ()<br> from /lib/libc.so.6<br>
#1 0x4010db7c in read_VV (block=0x24f578,<br> entry_point=0x872c <init_ECL_PROGRAM>)<br> at /media/mmc2/ecl/src/c/read.d:2203<br>#2 0x00008798 in main (<br> argc=<value optimized out>,<br> argv=<value optimized out>)<br>
at /media/mmc2/ecl/build/ECLINITSrP7rJ.c:50<br><br>Although I'm wondering if this failure wasn't really the result of using different libc6 versions--since the only binaries I could find for armel were the main debian repositories, I used libc6 version 2.7 and associated binaries instead of the version 2.5 binaries the Nokia-provided SDK uses. As such these results may not be worth anything.<br>
<br>(Actually, it confuses me that ECL can fail this badly after getting all the way through the compilation process, considering that it has to load and run ecl_min to even compile the rest of the executable.)<br><br>Again, thanks for your support.<br>
<br><div class="gmail_quote">On Tue, Mar 3, 2009 at 12:55 AM, Juan Jose Garcia-Ripoll <span dir="ltr"><<a href="mailto:juanjose.garciaripoll@googlemail.com" target="_blank">juanjose.garciaripoll@googlemail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>On Tue, Mar 3, 2009 at 12:51 AM, Elliott Slaughter<br>
<<a href="mailto:elliottslaughter@gmail.com" target="_blank">elliottslaughter@gmail.com</a>> wrote:<br>
> If I can't cross compile, then as I see it, I have two options: Either<br>
> I can compile on the device itself, or I can emulate an ARM CPU on my<br>
> x86 machine and pretend that it's compiling on the real thing.<br>
<br>
</div>I have been using the second one in the past, when I had a Linux box<br>
available. QEMU was running fine with ARM but, again, I had to use<br>
--with-fpe=no at configuration time to disable floating point<br>
exceptions, because the kernel library for them was buggy.<br>
<div><br>
> ;;; arm-linux-gnueabi-gcc -o<br>
> "/home/elliott/src/ecl-9.1.0/build/libecl.so"<br>
> -L"/home/elliott/src/ecl-9.1.0/build/" "c/main.o" "c/all_symbols2.o"<br>
> "liblsp.a" "libeclmin.a" -leclgmp -lm -lgcBroken at<br>
<br>
</div>This step is trying to build the shared library with all of ECL in it.<br>
However I see that this command is missing a flag: -shared, that<br>
indicates that the output is a DLL and not a program. This flag is<br>
automatically detected by the configuration process, that is unless<br>
the host detection step (config.guess and config.sub) fails to<br>
identify your system.<br>
<div><div></div><div><br>
Juanjo<br>
<br>
--<br>
Instituto de Física Fundamental, CSIC<br>
c/ Serrano, 113b, Madrid 28009 (Spain)<br>
<a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Elliott Slaughter<br><br>"Any road followed precisely to its end leads precisely nowhere." - Frank Herbert<br>