[Ecls-list] Example about building / loading ECL libraries

Dietrich Bollmann dietrich at formgames.org
Mon Jun 24 15:26:57 UTC 2013


Hi Juanjo,

Sorry for being unclear!

The example sources in embed-windows.tar from the email

  - Re: [Ecls-list] Example about building / loading ECL libraries
    http://sourceforge.net/mailarchive/message.php?msg_id=30912414

(see 'embed-windows.tar',
http://sourceforge.net/mailarchive/attachment.php?list_name=ecls-list&message_id=CAMCvb%3DAZ4XtzpQ3kwc7qhjctNXTc5bhqWP0s4-cHVnhxXKf6AQ%40mail.gmail.com&counter=2)

show how to compile the files hello-lisp.asd and hello-lisp.lisp on Windows
into the static library hello-lisp.lib which than is used to build
hello.exe from hello.c.

the line

ecl -norc -load compile.lisp

in the Makefile is responsible for building the static library based on the
lisp build file compile.lisp:

=== compile.lisp ===
(ext:install-c-compiler)
(require :asdf)
(push "./" asdf:*central-registry*)
(asdf:make-build :hello-lisp :type :static-library :move-here "./")
(quit)
===

So my fist and probably naive attempt to build a shared library was to
change ':type :static-library' to ':type :shared-library' resulting in the
following file:

=== compile.lisp ===
(ext:install-c-compiler)
(require :asdf)
(push "./" asdf:*central-registry*)
(asdf:make-build :hello-lisp :type :shared-library :move-here "./")
(quit)
===

But unfortunately nothing happens when trying to use this file to build a
shared library:

$ ls -la

total 28
drwxr-xr-x 1 dietrich    0 Jan  1  1970 .
drwxr-xr-x 1 dietrich    0 Jan  1  1970 ..
-rw-r--r-- 1 dietrich  636 Jun 24 23:44 compile.lisp
-rw-r--r-- 1 dietrich  453 Jun 24 23:44 hello.c
-rw-r--r-- 1 dietrich   64 Jun 24 23:44 hello-lisp.asd
-rw-r--r-- 1 dietrich   48 Jun 24 23:44 hello-lisp.lisp
-rw-r--r-- 1 dietrich 1259 Jun 24 23:44 Makefile
-rw-r--r-- 1 dietrich  342 Jun 24 23:44 README
-rw-r--r-- 1 dietrich  528 Jun 24 23:44 vsenv

$ ./vsenv ecl.exe -norc -load compile.lisp

Setting environment for using Microsoft Visual Studio 2010 x64 tools.
;;; Loading
"E:/Users/dietrich/home/cs/lang/lisp/ecl/diary/2013/06/24/windows/dynamic-link-libraries/bastel100/v100/shared-lib/embed-windows/compile.lisp"
;;; Loading
#P"C:/Users/dietrich/home/cs/lang/lisp/ecl/64/git/install/cmp.fas"
;;; Loading
#P"C:/Users/dietrich/home/cs/lang/lisp/ecl/64/git/install/asdf.fas"

$ ls -la

total 28
drwxr-xr-x 1 dietrich    0 Jan  1  1970 .
drwxr-xr-x 1 dietrich    0 Jan  1  1970 ..
-rw-r--r-- 1 dietrich  636 Jun 24 23:44 compile.lisp
-rw-r--r-- 1 dietrich  453 Jun 24 23:44 hello.c
-rw-r--r-- 1 dietrich   64 Jun 24 23:44 hello-lisp.asd
-rw-r--r-- 1 dietrich   48 Jun 24 23:44 hello-lisp.lisp
-rw-r--r-- 1 dietrich 1259 Jun 24 23:44 Makefile
-rw-r--r-- 1 dietrich  342 Jun 24 23:44 README
-rw-r--r-- 1 dietrich  528 Jun 24 23:44 vsenv

So now I wonder what I have to do in order to build a shared library...

One approach would be to change the Makefile and / or the compile.lisp
file, but I am not sure how;

another one might be to compile the lisp files to .h, .c, .data files first
and build a shared library "by hand" using 'cl' and 'link'.

Which approach would be the better one?

Or is there some better way to solve this problem?

Thanks again,

Dietrich









On Mon, Jun 24, 2013 at 9:50 PM, Juan Jose Garcia-Ripoll <
juanjose.garciaripoll at gmail.com> wrote:

>
> On Mon, Jun 24, 2013 at 2:34 PM, Dietrich Bollmann <dietrich at formgames.org
> > wrote:
>
>> Using :shared-library at the place of :static-library in the asdf:make-build
>> command seems not to be enough - at least not under Windows.
>>
>
> What does it mean "not enough". Please, be more accurate on your reports.
>
>
>
> --
> Instituto de Física Fundamental, CSIC
> c/ Serrano, 113b, Madrid 28006 (Spain)
> http://juanjose.garciaripoll.googlepages.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20130625/fed84fd4/attachment.html>


More information about the ecl-devel mailing list