[Ecls-list] ecl 0.5 build issues on OS X/Solaris. plus questions & feature reqs
John B. Thiel
jbthiel at pobox.com
Tue Jan 1 13:32:28 UTC 2002
> On Monday 31 December 2001 04:37, I wrote:
>
> Hi Juanjo, congratulations! Very great to see this open-source
> *compilable* Common Lisp for native OS X - the first one! I believe.
> This was also my first introduction to ECL (formerly only aware of cmucl
> and clisp) and the design, ideas and documentation are most impressive.
> I may very well adopt this as my primary CL as soon as possible.
>
> Many thanks to you and all developers, and please keep up the excellent
> work and support for OS X. I am compiling the latest CVS version now,
> and (though not too expert in CL) will forward any findings or useful
> comments from my testing. Looking forward to the upcoming performance
> improvements, GC, dynamic loading, etc.
Greetings again Juanjo (and now rest of maillist),
Assorted notes/questions follow from my first tryout of ecl on OS X and
Solaris 8 in the last 48 hours. I am completely new to ECL, and not very
expert with CL, so things noted as bug might not be.
Clarifications/tips appreciated.
How close is the dynamic loading, on-the-fly compilation on OS X? Is it
known how and technically possible to achieve this? Is anybody working
on it?
Best regards,
-jt
BUILD NOTES UNDER OS X 10.1.2 (using cvs checkout as of Dec30)
(I think the config, Makefiles, etc. could be updated to avoid the
following 2 issues...)
* BUG: I had to hand copy gmp.h to /usr/local/lib/ecl/h [else
compiles were failing]
* BUG: I was getting ranlib errors when running ecl after the install:
/usr/bin/ld: table of contents for archive: /usr/local/lib/ecl//libecl.a
is out of date; rerun ranlib(1) (can't load from it)
/usr/bin/ld: table of contents for archive:
/usr/local/lib/ecl//libclos.a is out of date; rerun ranlib(1) (can't
load from it)
/usr/bin/ld: table of contents for archive: /usr/local/lib/ecl//liblsp.a
is out of date; rerun ranlib(1) (can't load from it)
/usr/bin/ld: table of contents for archive: /usr/local/lib/ecl//libgmp.a
is out of date; rerun ranlib(1) (can't load from it)
I fixed it with :
ranlib /usr/local/lib/ecl/lib*.a
Makefile should do this step before install, right?
============
* FEATURE: It would be nice to add support for the readline library.
* DOC BUG (?): In the example to make a standalone executable
[http://ecls.sourceforge.net/ecldev.html]
I had to use two :: for c::build-program -- that worked, whereas
Documentation says...
> (c:build-program "myecl" :lisp-files '("hello.o"))
But...
> (c:build-program "ecl-fib" :lisp-files (quote ("ff.o" "fib.o"
"fac.o")))
Cannot find the external symbol BUILD-PROGRAM in #<"C" package>.
* FEATURE: It would be nice if the getopt also accepted single letter
args, (eg. -l for load).
Also that 'ecl abc.lisp xyz.lisp ...' might do something logical
(currently it gives 'unknown flag' error)
Usage: ecl [-dir dir] [-load file] [-eval expr]
[-compile file [-o ofile] [-c [cfile]] [-h [hfile]] [-data
[datafile]] [-s]]
* FEATURE: (compile-file "xyz") does not find xyz.lisp, whereas (load
"xyz") does find xyz.lisp. It would be nice if the dual .lsp and .lisp
extensions were supported everywhere.
* BUG: I think I encountered a bug just fiddling with the inspector on
lists - the nthcdr keeps descending into nil every time it gets to the
end of a list or sublist. Try for example:
(inspect '(3 4 (5 6 7) (8 9) 8 9))
Hitting 'n' descends forever into the tails... (maybe theoretically
correct but not very useful).
* QUESTION: Is it supported to link .o files or libraries compiled from
original .c files, and call them from ECL? If so, how? I did not find
this case in the documentation which seems more oriented to the model of
embedding C bodies, or calling lisp code from C. For example, I tried
to build an image with
fac.o compiled from fac.c via gcc, and
fib.o compiled from fib.lsp via ecl -s , and
ff.o from ff.lsp containing
(defentry fac (int) (int fac))
The build step failed with:
ecl -eval '(c::build-program "ecl-fib" :lisp-files (quote ("ff.o"
"fib.o" "fac.o")))'
"gcc -g -O2 -Ddarwin -O -I/usr/local/lib/ecl//h -w -c ecl-fib.c -o
ecl-fib.o"
"gcc -w -o ecl-fib -L/usr/local/lib/ecl/ ecl-fib.o ff.o fib.o fac.o
-lecl -lclos -llsp -lgmp -lgmp -lm"/usr/bin/ld: Undefined symbols:
_init_FAC
=========================
SOLARIS 8 (Blade 100)
BUG: Build is failing
cd c; make
./dpp /usr/local/src/ecl/ecls/src/c/main.d main.c
dpp: /usr/local/src/ecl/ecls/src/c/main.d -> main.c
gcc -c -I../h -I/usr/local/src/ecl/ecls/src/h -g -O2 -Dsun4sol2 -o
main.o main.c
In file included from /usr/local/src/ecl/ecls/src/h/ecl.h:43,
from /usr/local/src/ecl/ecls/src/c/main.d:36:
/usr/local/src/ecl/ecls/src/h/object.h:232: parse error before `u_int8_t'
/usr/local/src/ecl/ecls/src/h/object.h:232: warning: no semicolon at end
of struct or union
/usr/local/src/ecl/ecls/src/h/object.h:238: parse error before `}'
/usr/local/src/ecl/ecls/src/h/object.h:247: field `self' has incomplete
type
/usr/local/src/ecl/ecls/src/h/object.h:261: field `self' has incomplete
type
make[2]: *** [main.o] Error 1
rm main.c
make[2]: Leaving directory `/usr/local/src/ecl/ecls/build/c'
make[1]: *** [libecl.a] Error 2
make[1]: Leaving directory `/usr/local/src/ecl/ecls/build'
make: *** [all] Error 2
More information about the ecl-devel
mailing list