Thanks so much Wiffel, it worked (using chicken-4.9.0.1!). I want to go "the C way" only because I want to later compile the generated C code for a different ISA (ALPHA).
For future reference, to aid others: my shell (zsh) somehow expanded $CHICKEN_FILES as a single argument to gcc, and got `gcc: error: ./chicken/runtime.c ./chicken/library.c ./chicken/build-version.c: No such file or directory` as a result. Running `gcc -static -I./chicken array1.c ./chicken/runtime.c ./chicken/library.c ./chicken/build-version.c -O3 -fno-strict-aliasing -fomit-frame-pointer -lm -o array1` does the trick (although it still remains unclear to me why it is not expanded correctly). Thank you, Nikos On Thu, Jun 12, 2014 at 11:42 AM, wiffel <[email protected]> wrote: > Hi Nikos, > > If you don't want to use 'csc' and really want to go the 'C way', you will > need more then the 'chicken.h' file. You will need at least the following > files: 'buildtag.h', 'build-version.c', 'chicken.h', 'library.c' and > 'runtime.c'. All of them can be found in the top directory of the chicken > source. > > Once you have these - and put them in a subdirectory called e.g. 'chicken' - > you can compile the application like this: > > chicken array1.scm -explicit-use -uses library -optimize-level 5 > > CHICKEN_FILES="chicken/runtime.c chicken/library.c > chicken/build-version.c" > > gcc -static -I./chicken array1.c $CHICKEN_FILES -O3 -fno-strict-aliasing > -fomit-frame-pointer -lm -o array1 > > This will also give you a statically linked 'array1', which - in my case - > has about the same speed as the one using 'csc -O5'. > > > Good Luck, > Wiffel > > > On 12/06/14 17:27, wiffel wrote: >> >> Hi Nikos, >> >> If you remove the definition of the 'main' function and add an expression >> like this: >> >> (time (go 200000)) >> >> and compile it with: >> >> csc -static -O5 array1.scm >> >> you should end up with a statically linked application 'array1' >> that is optimized for speed (because of the -O5). >> >> Runs in about half a second on my computer. >> >> Good Luck, >> Wiffel >> >> On 12/06/14 15:11, Nikos Vasilakis wrote: >>> >>> Hello everyone, >>> >>> I am trying to compile a simple scheme program down executable through >>> C, with no success. My program is array1 from the Kernighan and Van >>> Wyk Benchmarks, as implemented here [1]. I am using chicken 4.7 on >>> ubuntu 12.04 (details: [2]) and grabbed the chicken.h header file from >>> a github repo [3]. >>> >>> In particular, `chicken array1.scm` creates array1.c, but running `gcc >>> array1.c` throws a big number of "undefined reference to .." ending >>> with "collect2: ld returned 1 exit status" [4]. >>> >>> So that people help out most, my eventual goal is to compile a >>> statically linked executable binary. Ideally, therefore, I would need >>> to have a "chicken.c" or the chicken runtime linked in. >>> >>> Thanks so much! >>> Nikos >>> >>> >>> [1] >>> http://www.ccs.neu.edu/home/will/Twobit/src/array1.scm >>> >>> [2] >>> Version 4.7.0 >>> linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ] >>> compiled 2011-10-17 on allspice (Linux) >>> >>> [3] >>> >>> https://github.com/scottbronikowski/rootfs/blob/2f5ad469b3ad3186ed7767c99c69d2b6fe8da429/usr/include/chicken/chicken.h >>> >>> [4] http://pastebin.com/xNEiVeZG >>> >>> _______________________________________________ >>> Chicken-users mailing list >>> [email protected] >>> https://lists.nongnu.org/mailman/listinfo/chicken-users >> >> >> >> _______________________________________________ >> Chicken-users mailing list >> [email protected] >> https://lists.nongnu.org/mailman/listinfo/chicken-users > > _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
