Compiling Chicken code (part I)
(This post is just a quick introduction to using the Chicken compiler and interpreter.)
Consider this simple file:
;; hello.scm (print "Hello, world!")
Save this as hello.scm.
Running this as a script in the interpreter is done as follows:
$ csi -s hello.scm
Note that if the -s is omitted, the script will still run, after which the interactive interpreter is started. This can be useful in some situations (e.g. to do post-execution inspection).
Alternatively, we may choose to compile the script to an executable:
$ csc hello.scm
(csc has a lot of options, but the simplest case does what most people would expect, i.e. it compiles an the executable named hello.)
Lo and behold, it works:
$ ./hello Hello, world!
On my system (using Chicken 2.732, Mac OS X 10.4, Intel Dual Core) this produces a 14K executable, which seems quite reasonable. However, the way I understand it, this file dynamically links to the Chicken libraries. To create a standalone executable, we must use the -static command line option, which produces a much bigger file:
$ csc -static hello.scm $ ls -l hello -rwxr-xr-x 1 zephyrfa zephyrfa 1370732 Dec 30 13:54 hello*
By the way, I'm not entirely sure that this really produces an executable that is 100% standalone... I'll have to do more testing.
There is much, much more to the Chicken compiler. Expect to see more about it in future posts. (Like the next one... :-)