[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