On Sun, Jun 26, 2011 at 7:11 AM, Eric Schulte <span dir="ltr"><<a href="mailto:schulte.eric@gmail.com">schulte.eric@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

attempting to compile this program results in the following error message<br>
<br>
    $ gcc -o use -L. -lecl -lfoo<br>
    /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/../../../crt1.o: In function `_start':<br>
    [.text+0x20]: undefined reference to `main'<br>
    collect2: ld returned 1 exit status<br></blockquote><div><br>The order of libraries is wrong and this is missing a C file (use.c) that calls the library.  This should have read<br><br>gcc -o use use.c -L. -lfoo -lecl<br>

<br>I have uploaded a fixed version of ECL that adds a warning about the files that one tries to link into a standalone DLL. It follows a real session of how this works right now<br><br>$ ecl -norc<br>ECL (Embeddable Common-Lisp) 11.1.1<br>

Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya<br>Copyright (C) 1993 Giuseppe Attardi<br>Copyright (C) 2000 Juan J. Garcia-Ripoll<br>ECL is free software, and you are welcome to redistribute it<br>under certain conditions; see file 'Copyright' for details.<br>

Type :h for Help.  <br>Top level.<br>> (require :cmp)<br><br>;;; Loading #P"/Users/jjgarcia/lib/ecl-11.1.1/cmp.fas"<br>("CMP")<br>> (c::build-shared-library "foo" :lisp-files (list (compile-file "foo" :system-p t :verbose nil)))<br>

<br>;;; Compiling (DEFUN FOO ...).<br>;;; Emitting code for FOO.<br>;;; Note:<br>;;;   Invoking external command:<br>;;;   gcc -I. -I/Users/jjgarcia/include/ -g -O2 -fPIC -fno-common -Ddarwin -O2 -w -c foo.c -o foo.o <br>

"common-lisp-user::foo common-lisp-user::hola 0" <br>Condition of type: SIMPLE-ERROR<br>In C:BUILDER, when building file<br> libfoo.dylib<br>tried to link together files that contained split binary data.<br>Unfortunately this is currently not possible. To avoid this<br>

recompile the files setting C::*COMPILE-IN-CONSTANTS* to T.<br>List of offending files:<br> #P"/Users/jjgarcia/foo.o"<br><br>Available restarts:<br><br>1. (RESTART-TOPLEVEL) Go back to Top-Level REPL.<br><br>Broken at SI:BYTECODES. [Evaluation of: (C:BUILD-SHARED-LIBRARY "foo" :LISP-FILES (LIST (COMPILE-FILE "foo" :SYSTEM-P T :VERBOSE NIL)))]<br>

>> :q<br><br>Top level.<br>> (setf c::*compile-in-constants* t)<br><br>T<br>> (c::build-shared-library "foo" :lisp-files (list (compile-file "foo" :system-p t :verbose nil)))<br>;;; Compiling (DEFUN FOO ...).<br>

;;; Emitting code for FOO.<br>;;; [...]<br>;;; Note:<br>;;;   Library initialization function is main_dll_FOO<br>;;; [...]<br>#P"libfoo.dylib"<br>> (si::system "gcc -o main.exe main.c -L$HOME/lib -L./ -lfoo -lecl")<br>

<br>0<br>> (si::system "./main.exe")<br><br>HOLA <br>0<br><br> </div></div>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>