Thanks, that's exactly what I was looking for!

-- 
Per Eckerdal

On torsdag 10 november 2011 at 21:33, Marc Feeley wrote:


On 2011-11-10, at 2:37 PM, Per Eckerdal wrote:

Hi,

I'm trying to compile a scheme file that uses Gambit's compiler functions to a standalone executable. Is there any good/obvious way of doing that?

This illustrates my problem:

$ cat t.scm
(write compile-file)
$ gsc -exe t.scm
*** WARNING -- "compile-file" is not defined,
*** referenced in: ("/Users/per/prog/gambit/blackhole/tmp/t.c")
$ ./t
#!unbound

Because you are linking with more than the base library, you need additional linking steps:

1) explicit linking (with gsc -link) with the link file ~~lib/_gambcgsc.c (this is an incremental link because this link file extends the base library)

2) explicit linking (at the C level) with the library ~~lib/libgambcgsc.a

Here's an example, tested on Mac OS X:

% ls t*
t.scm
% cat t.scm
(pp compile-file)
% GAMBCLIBDIR="`gsc -e \"(display (path-expand \\\"~~lib\\\"))\"`"
% gsc -link -l "$GAMBCLIBDIR/_gambcgsc.c" t.scm
% gsc -obj t_.c t.c
t_.c:
t.c:
% gsc -exe -ld-options "$GAMBCLIBDIR/libgambcgsc.a" t_.o t.o
% ./t
#<procedure #2 compile-file>
% ls t*
t t.c t.o t.scm t_.c t_.o

Marc