appears using CHICKEN 5 but extras.c & data-structures.c are CHICKEN 4 modules
> On Aug 15, 2020, at 2:42 AM, Kristian Lein-Mathisen <[email protected]> > wrote: > > > Hi, > > I'm glad that helped. But I suppose I should have explained my process, > instead of just giving you the end result - which clearly doesn't work once > you start adding imports like you have. > > The error messages you're seeing (undefined reference to `C_extras_toplevel') > are coming from your C compilier. They mean that your program is using a > function which isn't defined anywhere, so we need to find where > C_extras_toplevel is defined. > > There are probably a hundred different ways of finding the .c file which > defines a function. Here's and one. Install ctags and then run this: > > ~/o/chicken-5.2.0rc1 ➤ ctags *.c > # creates a "grepable" file called tags > > ~/o/chicken-5.2.0rc1 ➤ grep C_extras_toplevel tags > C_extras_toplevel extras.c /^void C_ccall > C_extras_toplevel(C_word c,C_word *av){$/;" f typeref:typename:void > C_ccall > # so it seems we need extras.c too > > ~/o/chicken-5.2.0rc1 ➤ grep C_data_2dstructures_toplevel tags > C_data_2dstructures_toplevel data-structures.c /^void C_ccall > C_data_2dstructures_toplevel(C_word c,C_word *av){$/;" f > typeref:typename:void C_ccall > # and data-structures.c > > ~/o/chicken-5.2.0rc1 ➤ gcc -DHAVE_CHICKEN_CONFIG_H hello.c -I . runtime.c > library.c eval.c expand.c modules.c internal.c chicken-syntax.c > build-version.c extras.c data-structures.c -lm -llog -o hello > > Adding those two files to the gcc command should get your program to compile > properly. If not, you can find the missing .c files by grepping `tags`. > > Hope that helps. > K. > > On Sat, Aug 15, 2020, 02:57 亀田馬志 <[email protected] > <mailto:[email protected]>> wrote: > Hello. > > > gcc -DHAVE_CHICKEN_CONFIG_H hello.c -I . runtime.c library.c eval.c > > expand.c modules.c internal.c chicken-syntax.c build-version.c -lm -o hello > > Oh, yes. It works! Great! Thank you! > > But...... > > I wrote a script like this. > > (import format (chicken io) (chicken string) (chicken process-context)) > > (require-extension srfi-13) > > (let ((file-name (car (command-line-arguments)))) > (with-input-from-file file-name > (lambda () > (let loop ((ls0 '()) (c (read-line))) > (if (eof-object? c) > (for-each (lambda (x) > (format #t > "時刻:~A秒,北緯:~A度~A分,東経:~A度~A分~%" > (+ (* (cadar x) 60) (caddar x)) > (string-take (cadr x) 2) > (string-drop (cadr x) 2) > (string-take (caddr x) 3) > (string-drop (caddr x) 3))) > (reverse ls0)) > (let ((ls1 (string-split c ","))) > (if (string=? (car ls1) "$GPGGA") > (loop (cons `(,(map string->number > (string-chop (list-ref ls1 1) 2)) > ,(list-ref ls1 2) > ,(list-ref ls1 4)) ls0) (read-line)) > (loop ls0 (read-line))))))))) > > Sorry, some Japanese are mixed. But. Anyway. > I try compiling with your way, and gcc gives me an error like this. > > /usr/bin/ld: /tmp/ccxVWfZy.o: in function `f_223': > poichan-01-1.c:(.text+0x765): undefined reference to `C_extras_toplevel' > /usr/bin/ld: /tmp/ccxVWfZy.o: in function `f_226': > poichan-01-1.c:(.text+0x92d): undefined reference to > `C_data_2dstructures_toplevel' > collect2: error: ld returned 1 exit status > > Hmmmm.... Is there something wrong on the code? > What are the C_extras_toplevel and C_data_wdstructures_toplevel? > > If I used some libraries from chicken-install, should I use the compiled > "scheme to c" file too? > > There must be something more to learn around the Chicken Scheme more..... > > Anyway, you have helped me a lot! Thank you. > > > 2020年8月13日(木) 14:56 Kristian Lein-Mathisen <[email protected] > <mailto:[email protected]>>: > > Hi, > > I managed to get something working on my termux, maybe that can help you: > > ~/o/chicken-5.2.0rc1 ➤ > echo '(print "hello")' > hello.scm ~/o/chicken-5.2.0rc1 ➤ > ./csc -t hello.scm > ~/o/chicken-5.2.0rc1 ➤ > gcc -DHAVE_CHICKEN_CONFIG_H hello.c -I . runtime.c library.c eval.c expand.c > modules.c internal.c chicken-syntax.c build-version.c -lm -llog -o hello > ~/o/chicken-5.2.0rc1 ➤ ldd hello > libm.so > liblog.so > libdl.so > libc.so > ~/o/chicken-5.2.0rc1 ➤ ./hello > hello > > You can ignore -llog unless you're on Android. > > So you don't need buildtag.h. Is there a reason you can't "csc -static > hello.scm" or "csc -static -C -static hello.scm" which is a more common > use-case? > > Cheers, > K. > > On Thu, Aug 13, 2020, 03:27 亀田馬志 <[email protected] > <mailto:[email protected]>> wrote: > Thanks for your reply. > > > It seems there is a chicken-bin for U20.04LTS > > Yes, there is BINARY. I mean I could not find a SOURCE CODE package. > (Usually, you can take source code from the Ubuntu repository if you wished > to.) > > > > did you try compiling hello.scm to hello.c with that? > > Yes, I did. > To write a single file with Scheme codes, and to compile to a SINGLE c file, > it is a piece of cake. > > > Are you reading the manual for Chicken 5 > > Yes, of course. I followed the instructions on it. > You may see there: > > "Compiled to C, we get hello.c. We need the files chicken.h, > chicken-config.h, buildtag.h and runtime.c, which contain the basic runtime > system, plus the library files build-version.c, chicken-syntax.c, eval.c, > expand.c, internal.c, library.c and modules.c, which contain the same > functionality as the library that is linked into plain CHICKEN-compiled > applications:" > > However, as you may notice, there is no buildtag.h generated even though you > built Chicken Scheme from its source code. > Therefore, you can not proceed to the rest process using /tmp described next. > > > perhaps the manual is outdated? > > OMBuddha. If what you are saying were right....what should I do!? > > Thanks. > > > > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > ウイルス フリー。 www.avast.com > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > > <x-msg://1/#m_-3771291668364076337_m_2995656887587357561_m_-6378871799878235639_m_-3841790857946966358_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > 2020年8月13日(木) 6:39 Kristian Lein-Mathisen <[email protected] > <mailto:[email protected]>>: > > Hi, > > It seems there is a chicken-bin for U20.04LTS [1], did you try compiling > hello.scm to hello.c with that? What is it that you're trying to acheive? > > I don't seem to have any buildtag.h either, perhaps the manual is outdated? > > Are you reading the manual for Chicken 5 [2]? > > K. > [1]: https://packages.ubuntu.com/focal/interpreters/chicken-bin > <https://packages.ubuntu.com/focal/interpreters/chicken-bin> > [2]: http://wiki.call-cc.org/man/5/Deployment#distributing-compiled-c-files > <http://wiki.call-cc.org/man/5/Deployment#distributing-compiled-c-files> > > On Mon, Aug 10, 2020, 21:28 亀田馬志 <[email protected] > <mailto:[email protected]>> wrote: > Hello. > > I tried following and obeying the instructions described in Deployment, the > manual of Chicken Scheme, in order to cock-a-do-do "Distributing compiled C > files", but it did not work well. > > 1. Ubuntu Repository provides no source code of Chicken Scheme > > I'm using Ubuntu 20.04 LTS, currently an OS under the feather, and I could > not find the source code of Chicken Scheme in its repository. Neither in > Debian? I do not know. > Hen_ce, I had to build Chicken Scheme from its source code. > > 2. Where the chick can I find buildtag.h? > > I switched to using Windows 10, and made an environment of Ubuntu with > WSL(Windows Subsystem for Linux). There I built a Chicken Scheme from its > source, and followed the instructions. BUT. I could not find buildtag.h there > even though the manual says "generated by the build process". Did I miss > something? Is there any special way to get buildtag.h? > > 3. Anyway tried compiling "Hello World", but getting a bunch of error > messages. > > I did not know whether compiling with gcc worked well or not without > buildtag.h, but I tried. The result was a bunch of errors, something like > this: > > "/usr/bin/ld: /tmp/ccJKB9L5.o: in function `C_modules_toplevel': > modules.c:(.text+0xad58): undefined reference to `C_chicken_2dsyntax_toplevel' > collect2: error: ld returned 1 exit status" > > Something related to toplevel stuff did not work well. As egg-spected? Maybe, > yes. > > Well, is there any technique of "Distributing compiled C files" outside of > the manual, or is there anything I did wrong(especially in the building > process)? > > Thanks, > > > > > > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > ウイルス フリー。 www.avast.com > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > > <x-msg://1/#m_-3771291668364076337_m_2995656887587357561_m_-6378871799878235639_m_-3841790857946966358_m_692582290224770852_m_6593347720704535955_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
